gpt4 book ai didi

mysql - 为什么在我的情况下 mysql 嵌套 select 比 join 更快?

转载 作者:行者123 更新时间:2023-11-29 21:52:31 25 4
gpt4 key购买 nike

大家好,

我的问题如下,我认为问题是我的 INNER JOIN 代码段,如何优化?

<小时/>

数据库关系:
enter image description here

查询条件:站点名称
查询目标: graph_path

SQL:

  1. 内连接:

    SELECT graph.graph_path
    FROM sites
    INNER JOIN inventory on (sites.id = inventory.site_id)
    INNER JOIN host on (host.inventory_id = inventory.id)
    INNER JOIN graph on (graph.host_id = host.id)
    WHERE sites.sitename = '10071';

    Results:
    1 rows in set (2.74 sec)

    Explain:
    enter image description here

  2. 嵌套:

    SELECT graph_path
    FROM graph
    WHERE host_id = (select id from host where inventory_id = (select id from inventory where site_id = (select id from sites where sitename = '10071')));

    Results:
    1 row in set (0.03 sec)

    Explain:
    enter image description here

最佳答案

此查询的最佳索引是:sites(sitename, id) , inventory(site_id, id) , host(inventory, id) , graph(hostid, graph_path) .

我猜测您只有 id 上有索引表中的内容。在第一个版本中,它首先执行所有连接,然后按站点进行过滤。在第二个中,它可能会扫描 sites首先,然后快速完成查询的其余部分。

关于mysql - 为什么在我的情况下 mysql 嵌套 select 比 join 更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33490815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com