mySQL:查询只是继续加载

时间:2018-02-03 14:24:21

标签: mysql mariadb sql-optimization

我想一起加入4张桌子。一个表来自数据库A,而另外三个表来自数据库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很陌生,我想询问我的查询设计是否有意义,以及是否有任何问题可能导致查询问题,即(不间断加载)。

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

1 个答案:

答案 0 :(得分:0)

评论时间有点长。

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

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

ON tableB.ts = . . .

(平等将是正常运营商。)

MySQL会将其他类型转换为布尔值。对于数字,0被视为" false"其他一切都是"真的" (NULL s是NULL s。。

所以:

ON tableB.ts

是可以接受的。但它实际上只是测试:

ON tableB.ts <> 0