select top 10 * from V_data where TypeID=1
and ID not in (select top 20 ID from V_data where TypeID=1 order by AddDate desc)
order by AddDate desc
上面sql语句黑字部分正常执行,但加上红字部分后,就总是超时,数据表就2W的数据。。这是咋回事啊。。。。
首先,该分页语句不是很通用。性能较差。
其次,order by用在非索引字段上导致耗时较长。可以看一下执行计划,最后排序消耗的占用比例是多少。
在AddDate上加上索引应该会有所改善。
可以先试一下
select top 10 * from V_data order by AddDate asc
看看执行时间。
AddDate建立索引了吗?
没有
我把 order by AddDate desc,改成 order by ID desc,也是超时
@East神奇: 看一下执行计划
select top 10 * from V_data as v1 where v1.TypeID=1
and v1.ID not in (select top 20 ID from V_data as v2 where v2.TypeID=1 order by v2.AddDate desc)
order by v1.AddDate desc
还是不行,我把视图 换成表了,就没问题了。。。不知道怎么回事
看你的sql的意思是分页,但是这样的分页肯定效率是很低的。
请问下,你在项目中一般是怎么分页的啊?
@East神奇: GOOGLE一下,网上很多
百度一下吧 谢谢
create index idx_AddDate on V_data (AddDate)