【发布时间】:2020-10-05 16:25:28
【问题描述】:
考虑下面的查询
SELECT
FlightDate,
FlightNum,
Origin,
Dest,
AirlineID
FROM
ontime1
WHERE
FlightDate >= (SELECT MIN(FlightDate) FROM ontime2 WHERE Origin='JFK') AND
FlightDate <= (SELECT MAX(FlightDate) FROM ontime2 WHERE Origin='JFK') AND
AirlineID IN (SELECT AirlineID FROM ontime2 WHERE Origin='JFK')
LIMIT 10;
ontime1 -> 根据 FlightDate 编制索引
ontime2 -> 基于 Origin、Dest 索引
由于表数据太大,连接表也不是最佳的
如何重复使用内部查询而无需一次又一次地重复相同的查询?
【问题讨论】:
-
是mysql还是clickhouse?
-
@simPod 它的 clickhouse
-
我不明白为什么有两个表
-
请再次说明ontime1和ontime2。它们包含相同的数据吗?我可以在您的查询中用另一个替换一个吗?并且只是为了确保我理解您的查询:如果表中有从 1990 年到 2020 年从肯尼迪国际机场起飞的航班,并且从肯尼迪国际机场开始的航空公司是 AA 和 Delta,那么您正在寻找 1990 年到 2020 年由 AA 和 Delta 运营的所有航班不管是什么起源。这是正确的吗?
-
全球每天大约有 100,000 个航班。假设 50 年来都是这样,而你已经追踪了所有这些;那是18亿次航班。这是很多数据,但您只会对该数据的一小部分感兴趣,所以我的感觉是您正在处理这个错误。
标签: sql database clickhouse