mySQL:查询一直在加载

mySQL: Query just keeps loading

我想加入 4 table 一起。一个 table 来自数据库 A,而另外 3 个 table 来自数据库 B。当我 运行 以下查询时,计算机一直在加载,没有错误或结果。我的查询是:

SELECT tableA.ts, tableA.voltage, tableB.Day0, tableC.Day0, tableD.Day0 FROM databaseA.tableA \
    -> INNER JOIN databaseB.tableB ON tableB.ts \
    -> INNER JOIN databaseB.tableC ON tableC.ts \
    -> INNER JOIN databaseB.tableD ON tableD.ts\
    -> BETWEEN tableA.ts - INTERVAL 50 SECOND AND tableA.ts + INTERVAL 50 SECOND

因为我对 SQL 很陌生,所以我想问问我的查询设计是否合理,是否有任何问题可能导致查询出现问题,即(不间断加载) .

当前查询的复杂性来自于需要将来自多个数据库的多个 table 连接在一起。这些 table 需要加入的共性将在 ts(时间戳)处。我在上面的查询设计中添加了 BETWEEN tableA.ts - INTERVAL 50 SECOND AND tableA.ts + INTERVAL 50 SECOND,因为 table 之间的时间戳可能会相差几秒钟。

评论有点长

您的ON条件不正确。你在表格之间做笛卡尔积。

ON 条件应该是两个(或可能更多)表之间的布尔比较。因此,您的表达式应该如下所示:

ON tableB.ts = . . .

(相等是正常的运算符。)

MySQL 会将其他类型转换为布尔值。对于数字,0 被认为是 "false",其他一切都是 "true"(NULLNULL)。

所以:

ON tableB.ts

可以接受。但它真的只是测试:

ON tableB.ts <> 0