小编Jul*_*F-C的帖子

使用单个SQL相关子查询来获取两列

我的问题由以下查询表示:

SELECT 
  b.row_id, b.x, b.y, b.something,
  (SELECT a.x FROM my_table a WHERE a.row_id = (b.row_id - 1), a.something != 42 ) AS source_x,
  (SELECT a.y FROM my_table a WHERE a.row_id = (b.row_id - 1), a.something != 42 ) AS source_y
FROM 
  my_table b
Run Code Online (Sandbox Code Playgroud)

我使用相同的子查询语句两次,以获得两者source_xsource_y.这就是为什么我想知道是否可以只使用一个子查询来做到这一点?

因为一旦我对我的真实数据(数百万行)运行此查询,它似乎永远不会完成并花费数小时,如果不是几天(我的连接在结束前挂起).

我正在使用PostgreSQL 8.4

sql postgresql indexing performance correlated-subquery

6
推荐指数
2
解决办法
5960
查看次数