gpt4 book ai didi

mysql - 选择将 X 连接到 Y 比将 Y 连接到 X 快十倍——这是为什么?

转载 作者:行者123 更新时间:2023-11-29 05:42:32 25 4
gpt4 key购买 nike

我对 MySQL 了解不多,只是一些非 DBA 程序员都知道的:如何将数据传入和传出。

我的网站上有一个页面运行非常缓慢,查询是瓶颈。这样做需要十秒钟:

    SELECT foo, bar, baz, bax
FROM small_table
LEFT JOIN
large_table
on small_table.id = large_table.thread_id

我没有任何索引,所以我索引了 id 列。现在需要六秒钟。

然后我做了一些阅读,尝试了 ANALYZEEXPLAIN 命令但并没有真正理解它们,然后只是为了实验,改变了周围的表格:

    SELECT foo, bar, baz, bax
FROM large_table <-- first
LEFT JOIN
small_table <-- second
on small_table.id = large_table.thread_id

现在它花了 零点六 秒。

[该应用程序是一个论坛。 small_table 列出话题(100 条记录),large_table 包含在这些话题上发表的帖子(20,000 条记录)。]

我当然可以继续实验,但是有一些问题:

  • 我发现了什么原理?
  • 一般来说,当我的选择速度较慢时,最好的处理方法是什么?
  • 在上面的例子中,我什至有和以前一样的 SELECT 吗?它产生完全相同的结果。
  • 我应该从ANALYZEEXPLAIN 中学到什么?

最佳答案

我敢打赌结果数据是不同的...除非您在全选中保留的列在小表中。

left join 保留第一个表中的每一行,并在存在匹配时添加第二个表中的行。

在你的第一种情况下,第一个表是大表,所以你有很多行。

在第二种情况下,第一个表较小,因此行数较少,因此查询速度更快。

关于mysql - 选择将 X 连接到 Y 比将 Y 连接到 X 快十倍——这是为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5615480/

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