SQL 查询 : inner joins optimization between big tables

标签 sql mysql optimization inner-join bigtable

我在 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/

相关文章:

php - 使用 PHP 显示 SQL 数据库中的有限行

bash - 在没有Dockerfile的情况下减少Docker镜像大小

mysql - 如何使用 WHERE、RANGE 和 SORT 设置 MySql 表的索引?

php - 将 Mysql 回显到表中 - 表示和 DOM

algorithm - 优化凹函数

sql - postgresql 中的 IF-THEN-ELSE 语句

java - TomEE 指向错误的数据源

sql - noSQL/SQL/RoR : Trying to build scalable ratings table for the game

php - 这个 $_SERVER ['REQUEST_METHOD' ] === 'POST' 是做什么的?

Java:从 MySQL DB 获取数据