如题,下面的是相关说明:
- SQL code
--视图V_test:select a.1,a.2,a.3,b.1,b.2,b.3 from a inner join b on a.0=b.0--语句1:Select top 15 * FROM (select ROW_NUMBER() Over(order by id) as rowId, * from V_testwhere type=123 and zt='测试') as tempTable where rowId > 0--语句2:Select top 15 * FROM (select ROW_NUMBER() Over(order by id) as rowId, * from V_testwhere type=123 and zt='测试') as tempTable where rowId > 15--说明,所有相关子段都加了索引,视图数据总量277万。--语句1瞬间就出来了,语句2接近一分钟才出结果--查看数据库记录,语句2逻辑读非常高--为什么?两个语句完全一样,除了最后那个分页起始条件不同!--求教各路高手不吝赐教啊[img=http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/54.gif][/img]
------解决方案--------------------
rowId > 15的记录是不是很多?如果很多的话可能会导致索引失效。
------解决方案--------------------
------解决方案--------------------
顶楼上 很可能是这样的
------解决方案--------------------
楼主最好把你的执行计划图贴出来,看看哪个部分有问题,可以优化
------解决方案--------------------
还得考虑缓存。你贴出来看看嘛
------解决方案--------------------
第一个优化器根本就不考虑where rowId > 0,因为rowId永远大于0,第二个就不同了
------解决方案--------------------