我在 MySQL 4.x 数据库中有以下 3 个表:
- 主机:(300.000 条记录)
- id (UNSIGNED INT) 主键
- 姓名(VARCHAR 100)
- 路径:(6.000.000 条记录)
- id (UNSIGNED INT) 主键
- 姓名(VARCHAR 100)
- 网址:(7.000.000 条记录)
- host (UNSIGNED INT) PRIMARY KEY <--- links to hosts.id
- path (UNSIGNED INT) PRIMARY KEY <--- links to paths.id
如您所见,架构非常简单,但问题在于这些表中的数据量。
这是我正在运行的查询:
SELECT CONCAT(H.name, P.name)
FROM hosts AS H
INNER JOIN urls as U ON H.id = U.host
INNER JOIN paths AS P ON U.path = P.id;
此查询运行良好,但需要 50 分钟才能运行。有谁知道我可以如何加快查询速度?
提前致谢。 尼古拉斯
最佳答案
也许您应该包含一个 WHERE 子句?还是您真的需要所有数据?
关于SQL 查询 : inner joins optimization between big tables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/511452/