【发布时间】:2019-03-29 19:13:07
【问题描述】:
SELECT *
FROM trips,
dates
WHERE places_number_on_flag > 0
AND places_number > 0
AND ( places_number - ( (SELECT Count(id)
FROM resrv_customers
WHERE trip = trips.id
AND ow > 0)
+ (SELECT Count(id)
FROM resrv_customers
WHERE trip = trips.id
AND extra_seat = 1
AND ow > 0) ) < 20 )
AND dates.id = trips.trip_date
AND dates.from_date > 2458553;
大约 1 分 50 秒后返回 5 行。
我希望它更快。
【问题讨论】:
-
你看过执行计划了吗?
-
请发布相关的
CREATE TABLE和CREATE INDEX声明以及计划。您还应该使用显式连接语法重新编写查询以获得更好的可读性。 -
@dodekja 。 . .您应该解释查询执行的逻辑。
-
Bad habits to kick : using old-style JOINs - 旧式 逗号分隔的表格列表 样式已替换为 ANSI 中的 proper ANSI
JOIN语法-92 SQL 标准(25 年前),不鼓励使用它
标签: sql postgresql optimization