gpt4 book ai didi

MySQL 查询优化

转载 作者:行者123 更新时间:2023-11-29 01:25:28 27 4
gpt4 key购买 nike

我正在执行一个查询,该查询正在查找一个表中不在另一个表中的值。例如:

SELECT id FROM table1 WHERE id NOT IN (SELECT id FROM table2);

两个表都有大约 100 万行,但只有几百行与结果集中返回的值不匹配。查询大约需要 35 秒。对查询进行显示配置文件显示mysql大部分时间都处于“准备”状态。关于如何优化这种状态或“准备”期间实际发生的情况有什么想法吗?

两个表中的 id 值均已索引,并且类型和大小相同。

查询的整个配置文件是:

+--------------------------------+----------+
| Status | Duration |
+--------------------------------+----------+
| (initialization) | 0 |
| checking query cache for query | 0 |
| Opening tables | 0.13 |
| System lock | 0 |
| Table lock | 0 |
| init | 0.01 |
| optimizing | 0 |
| statistics | 0 |
| preparing | 0 |
| executing | 0 |
| Sending data | 0 |
| optimizing | 0 |
| statistics | 0 |
| preparing | 34.83 |
| end | 0 |
| query end | 0 |
| freeing items | 0 |
| closing tables | 0 |
| logging slow query | 0 |
+--------------------------------+----------+

如有任何提示,我们将不胜感激。

谢谢。

最佳答案

我将在 id 上保留连接 table2,其中 id 为空。这将使您更快地返回数据。

select
a.id
from
table1 a
left join table2 b on a.id = b.id and b.id is null

关于MySQL 查询优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1960284/

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