上次我们发现在建立了索引时,分页排序还是很慢。

      慢的语句:      

SQL Server 2005 排序order by对查询性能的影响(2)_数据

SELECT TOP (10*(10000-1)) ID FROM  

SQL Server 2005 排序order by对查询性能的影响(2)_数据

[dbo].[[[zping.com]]]]] ORDER BY  workflowid DESC

   上面说到如果取的top(10*10) 使用索引,这时很快,换成了top(10*(10000-1))就是表扫描啊,

    原来:这时SQL server 2005优化器评估索引时,发现从文件去找99990行数据时,这时很可能这id数据分散在每个数据页中,

从索引查数据效率比表扫描要低,这时优化器就使用表扫描。

   这时如何优化和解决:方法如下

workflowid,id)的复合索引

      2,将id设置为聚集索引

   注意:

在排序上建立索引,可以提高性能,但这主要取决于数据库索引效率评估

    

 

   总结:

表扫描”后“排序”的情况

过滤条件”做严格限制,减少数据行数

     3,排序最后做到涵盖索引