非常简单奇怪的SQL错误。。请高手帮忙看看了

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的数据。。这是咋回事啊。。。。

拉丁的传说
浏览 682回答 11
11回答

慕虎7371278

首先,该分页语句不是很通用。性能较差。 其次,order by用在非索引字段上导致耗时较长。可以看一下执行计划,最后排序消耗的占用比例是多少。 在AddDate上加上索引应该会有所改善。 可以先试一下 select top 10 *  from V_data order by  AddDate asc 看看执行时间。

BIG阳

AddDate建立索引了吗?

当年话下

我把 order by AddDate desc,改成 order by ID desc,也是超时

一只甜甜圈

@East神奇: 看一下执行计划

慕容708150

还是不行,我把视图 换成表了,就没问题了。。。不知道怎么回事

米琪卡哇伊

看你的sql的意思是分页,但是这样的分页肯定效率是很低的。

红糖糍粑

请问下,你在项目中一般是怎么分页的啊?

江户川乱折腾

@East神奇: GOOGLE一下,网上很多

三国纷争

百度一下吧 谢谢

慕斯709654

create index idx_AddDate on  V_data  (AddDate)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

SQL Server