SQL联查语句加上order排序之后速度超级慢
2017-06-29 10:52
204 查看
项目中使用到了分页查询,形式如下
select * from ( select row_number() over (order by a.id0) as seq,a.* from PMS_T_D_StakeCoordinate a left join ZY_T_D_Route b on a.route_code=b.route_code ) as T where seq between 1 and 1000
本来分页查询应该是很快的,但是随着项目的进展,数据量逐步增加到了百万级,此查询直接报错“服务器连接超时”
于是将SQL考到SqlServer里面执行,发现需要2分多钟才能出结果
去掉“row_number() over (order by id0) as seq”之后时间减少到了15秒,这个差距太大了。。。
于是猜测是order by 的问题,在查询后面加上order by id0,查询时间又飙到了2分钟,果然如此
于是,寻求加自增长编号的方法替代order by
select IDENTITY(INT,1,1) as orderID,* into #ttemp from ( table... ) where seq between pageBegin and pageEnd select * from #ttemp
但是这里也有个问题,通过自增IDENTITY(INT,1,1)得到的orderID不是按顺序排列的,这个地方没搞清楚,求解求指点??????
不得已,在select * from #ttemp后面再order by一次,如下
select * from #ttemp order by orderID
这个担心用order by又会导致查询时间飙升,但结果也只花了16秒,nice!
如此看来,order by对单表影响不大,可能是因为我的查询中有太多的联查???
相关文章推荐
- sql的where语句中查询某个时间之后的话速度异常慢
- MySQL中select语句使用order按行排序
- 解决 联表查询 group by 之后 order by desc 不支持排序问题
- MySQL中select语句使用order按行排序
- Xcode升级到7之后 发现速度超级慢
- Lamda OrderBy之后再GroupBy,排序没有作用.
- MySQL如何利用索引优化ORDER BY排序语句
- 数据库之SQL ORDER BY 语句用于对结果集进行排序
- 裁剪之后的VBO和Displaylist速度比较
- ORACLE中用rownum分页并排序的SQL语句
- 批量处理JDBC语句提高处理速度
- 超级牛的排序
- 数据库查询速度优化 2 优化SQL语句方法
- 特别排序语句(字段首字母升序,字段相同则降序,其余升序)
- SQL学习之查询技巧 查询第3的数据 用一条语句分组,排序 并查询某一排名
- 批量处理JDBC语句提高处理速度
- 一条短信发错,变成了群发之后…… 超级暴笑!
- 查询速度超级慢
- 超级女声6进5之后。。。
- 一个根据SortOrder控制排序的存储过程