还是请教一下行号伪列的事,row_number太慢了。

shenlele088 2014-01-24 04:08:52
我做分布式程序,想利用行号来分段。
在oracle 下我用rownum,可以1分钟把3000万数据分完。
但是在pgsql ,我用row_number() over(),分要480s。


各位老大,帮看看
...全文
419 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
shenlele088 2014-02-12
  • 打赏
  • 举报
回复
晕,又测了几遍感觉所用时间不恒定。2列的曾经120s,10列的曾经40s。难道这样不能清缓存吗? “将db服务停掉(点击pgAdmin III中服务器的“停止服务”的菜单)后重启”
shenlele088 2014-02-10
  • 打赏
  • 举报
回复
2列的表和10列的表还有点区别: 2列的主键是integer:1-3千万 10列的主键是bigint:3亿开始的 但是感觉数字的排序应该不是啥瓶颈。
shenlele088 2014-02-10
  • 打赏
  • 举报
回复
是的,同样机器。 刚才还试了个刚建立的小表,2列,3000万记录。40s分完。 但是用真正的表10列,2个大对象,3000万记录。300s分完。(若是分完,马上再执行,40s。应该是内存有缓存了。) 我分的方式是用这两个表的主键id进行查询,用row_number做伪列进行的。
select cid ,row_number() over() rownum 
                  from t_test_rownum
                 order by cid
以上,我为了确保准确。将db服务停掉(点击pgAdmin III中服务器的“停止服务”的菜单)后重启后,执行的。 但在oracle 中,我用rownum,都是可以在1分钟内分完的。
懒得去死 2014-02-01
  • 打赏
  • 举报
回复
同样的硬件配置? 同样的相关参数?

972

社区成员

发帖
与我相关
我的任务
社区描述
PostgreSQL相关内容讨论
sql数据库数据库架构 技术论坛(原bbs)
社区管理员
  • PostgreSQL社区
  • yang_z_1
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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