SQL查询:大表之间的内连接优化

Nic*_*las 6 mysql sql optimization bigtable inner-join

我在MySQL 4.x DB中有以下3个表:

  • 主持人:(300.000条记录)
    • id(UNSIGNED INT)PRIMARY KEY
    • 名称(VARCHAR 100)
  • 路径:(6.000.000条记录)
    • id(UNSIGNED INT)PRIMARY KEY
    • 名称(VARCHAR 100)
  • 网址:(7.000.000条记录)
    • host(UNSIGNED INT)PRIMARY KEY <---链接到hosts.id
    • path(UNSIGNED INT)PRIMARY KEY <---链接到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;
Run Code Online (Sandbox Code Playgroud)

此查询工作正常,但需要50分钟才能运行.有没有人知道如何加快查询速度?

提前致谢.萨科

Mit*_*eat 6

也许你应该包含一个WHERE子句?或者您真的需要所有数据吗?


cle*_*tus 2

一方面,我不会在查询中执行 CONCAT。在外面做。

但实际上,您的查询运行缓慢,因为您正在检索数百万行。