SQL优化:优化的途经

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yupeigu/article/details/86476922

SQL Server查询性能优化需要多种途径:

 1数据库设计。这可能是影响查询性能和数据完整性最重要的因素了,设计决策会影响读取、修改的性能。

规范化的OLTP数据库关注数据库完整性、去除冗余、建立多个实体之间的关系,这是一个适合快速事务处理的设计。通常在规范化的OLTP设计中看到很多的表,这意味着在查询中要连接很多表。

另一方面,OLAP数据仓库设计经常使用非规范化的星形结构、雪花状结构,这些设计使用了中心事实表,它连接了2个或更多的描述维度表。对于雪花结构设计,维度表也可以存在于关联它的关系表上,这种设计的重点在于查询执行的速度而不是事务的快速更新。

2、适当的索引

基于高优先级、频繁执行的查询来建立表索引。如果一个查询一天执行上千次且每次2秒完成,则可以通过适当的索引时每次运行时间少于1秒,增加这个索引可以显著减少SQL Server实例上的I/O压力。

应该根据需要建立索引,删除不用的索引。

表上的每个索引都会给数据修改操作增加开销,如果SQL Server使用低效率的索引甚至还会减慢查询的速度。在最初设计数据库的时候,索引最好少一些(当然,聚集索引、外键的非聚集索引还是要的)。在有需要的时候再增加索引,特别是在易变的、频繁更新的数据库中,索引需求是易变的,所以应该灵活、迭代的增加删除索引。

3、索引碎片

由于长期的数据修改,索引会产生碎片。由于碎片的增多,数据会扩散到更多的数据页中。查询同样多数据需要检索的数据页也就会更多,IO需求就会更高,查询就会更慢。

4、系统参数配置

包含了:数据库、SQL Server实例、操作系统配置。不适当的配置(比如启动了自动收缩、自动关闭数据库)会影响应用程序的性能。

 5、最新的统计信息

AUTO_CREATE_STATISTICS数据库选项激活了SQL Server自动产生关于列中值的分布的统计信息。如果关闭此选项,统计信息就会过期。由于SQL Server依赖统计信息区决定如何执行查询,如果SQL Server基于过期的统计信息进行判断,那么可能会选择一个不太好的查询计划。

当知道数据会有很大的变动时,也可以手动更新统计信息。

6、硬件

当通过索引、修改语句的写法等都不能提高查询速度时,原因可能是结果集中的行太多、IO的限制,这时应该考虑把数据库迁移到更高配置的服务器上。对处理器体系结构、可用内存、磁盘系统的选择都会显著影响查询性能。

7、网络吞吐量

获取查询结果所花的时间会受到缓慢的、不稳定的网络连接的影响,所以需要考虑这个潜在的影响因素。

猜你喜欢

转载自blog.csdn.net/yupeigu/article/details/86476922