数据库查询优化随想

        今天做项目时遇到一个问题,一个有7W多条记录的视图,在视图中有了子查询操作,所以不能对视图建索引,在使用存储过程对视图分页查询时,相当的慢,所以直接采用SQL语句,使得查询加快,我写的如下
SELECT top 100* from varchivestock where Serialnumber not in (Select Serialnumber top 7009 from varchivestock)
但这样也只是快了10秒左右,查询仍要用10秒,后来同事写了另外一个语句给我
SELECT *
FROM dbo.VArchiveStock
WHERE (Serialnumber > 7009) AND (Serialnumber <=
          (SELECT TOP 1 Serialnumber
         FROM (SELECT TOP 100 Serialnumber
                 FROM dbo.VArchiveStock
                 WHERE (Serialnumber > 7009)
                 ORDER BY Serialnumber ASC) A
         ORDER BY Serialnumber DESC))

结果执行只用了2秒  然后我查看了执行计划,对所用到的数据表重建索引,结果速度又快了1秒。


总结:查询时尽量不要使用集合操作,最好用条件操作来实现。以提高查询速度

posted on 2006-06-15 10:55  舒密  阅读(236)  评论(1)    收藏  举报

导航