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"(NULL
是 NULL
)。
所以:
ON tableB.ts
可以接受。但它真的只是测试:
ON tableB.ts <> 0
我想加入 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"(NULL
是 NULL
)。
所以:
ON tableB.ts
可以接受。但它真的只是测试:
ON tableB.ts <> 0