多个结构相同的表,要查出大量数据并分页用到了union 和rownumber()不过rownumber排序太慢了,请问各位大侠有什么好方法吗?在线等。。。。

zhangguoqiang_stu 2011-07-28 03:53:53

WITH OrderedTable AS (SELECT * FROM ( SELECT ROW_NUMBER() OVER (ORDER BY 拍摄时间 DESC) AS RowNum, * from(SELECT [车牌号码],[车牌颜色],[行驶方向],[拍摄地址],[拍摄时间],[速度],[状态],[东经],[北纬],[车牌照片],[车辆照片],
[车辆照片1],[编号],[联系电话],[id],[cpzp],[clzp1],[clzp2],[单位],[违章处理],[数据导出],[行驶状态],[车身颜色],[车型],[违章速度],[公路名称],[路段名称] FROM [garkcx].[dbo].[cfclxsjl_1] WHERE 1=1 AND 车牌号码 !='未检测'union all SELECT [车牌号码],[车牌颜色],[行驶方向],[拍摄地址],[拍摄时间],[速度],[状态],[东经],[北纬],[车牌照片],[车辆照片],
[车辆照片1],[编号],[联系电话],[id],[cpzp],[clzp1],[clzp2],[单位],[违章处理],[数据导出],[行驶状态],[车身颜色],[车型],[违章速度],[公路名称],[路段名称] FROM [garkcx].[dbo].[cfclxsjl_2] WHERE 1=1 AND 车牌号码 !='未检测' )A ) AS Temp) SELECT * FROM OrderedTable WHERE RowNum BETWEEN 1 AND 10

就是rownumber over 排序没有用到索引,请问要怎么写sql语句才能实现从几个表中取出符合条件的记录呢?
...全文
195 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangguoqiang_stu 2011-07-29
  • 打赏
  • 举报
回复
sql语句就是查结构相同的几张表。因为数据量较大,所以rownumber后面那个over(order by)排序用的时间比较长。请问有什么好的办法实现吗?如果只查一张表的话,就可以用到索引而速度非常快。一旦用union连接多个表之后再排序就用不到索引了,所以比较慢。
挨踢直男 2011-07-28
  • 打赏
  • 举报
回复
row_number是sql server 2005 新增的生成行号的工具,比以往的各种方法效率都要高,,,没有道理说row_number慢的
你的 sql乱糟糟的,你至少弄层次结构出来,让人看清楚点
zhangguoqiang_stu 2011-07-28
  • 打赏
  • 举报
回复
up 就是不用union怎么写sql语句才能起到和他一样的效果呢?

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧