这句sql能怎么优化,三十多万记录,查询时间要2秒,肯定有问题SELECT * from (SELECT ROW_NUMBER() over(order by ot.IsEnd asc,ot.AddTime desc) as rownum ,em.Id as emId FROM OngoingTask ot ) t where t.rownum between 120 and 130其中IsEnd是int类型,0,1,2,3,代表任务状态,IsEnd与AddTime 都添加了索引。
5 回答
繁星淼淼
TA贡献1775条经验 获得超11个赞
首先 30w条记录 如果全表查询 就是2秒 这个没有问题(去掉缓存的情况下 因为从硬盘上要读出这么多数据大致要花这么多时间)
其次 如果查询字段是索引 另说
查一下 有没有聚集索引
然后 如果可以 你的排序索引吧 id也加进去 试试
sql的查询 优先查询索引 如果返回值包含索引外的 字段那么会根据 当前索引指定的位置 去读相关记录
- 5 回答
- 0 关注
- 694 浏览
添加回答
举报
0/150
提交
取消