gpt4 book ai didi

选择其他 4 个表中不存在 id 的记录时,MySQL 查询速度变慢

转载 作者:行者123 更新时间:2023-11-28 23:39:06 27 4
gpt4 key购买 nike

我需要从包含 id 的表中选择所有记录,这些记录在其他四个表中未被“检查”。这是我的查询,有效:

select id, idDate, idInfo, idChecked from aTable 
where id not in (select id from aSimilarTable1 where idChecked is not null)
and id not in (select id from aSimilarTable2 where idChecked is not null)
and id not in (select id from aSimilarTable3 where idChecked is not null)
and id not in (select id from aSimilarTable4 where idChecked is not null)

表随着时间的推移而增长,现在这个查询需要很长时间才能运行(最多几分钟)。表的大小如下:

一个表 - 1000 条记录

aSimilarTable1, 2, 3, 4 - 50,000 条记录

我将努力减少表格的大小。但是,是否有更有效的方法来进行上述查询?

--澄清--

并非 aTable 中的所有 ID 都可能出现在 aSimilarTable1、2、3 或 4 中。我正在寻找 aTable 中不存在于任何 aSimilarTable 中,或者如果存在但未“检查”的 ID。

--更新--

解释查询计划:

id  select_type         table           type    possible_keys   key key_len     ref rows    Extra
1 PRIMARY aTable ALL null null null null 796 Using where
5 DEPENDENT SUBQUERY aSimilarTable4 ALL null null null null 21217 Using where
4 DEPENDENT SUBQUERY aSimilarTable3 ALL null null null null 59077 Using where
3 DEPENDENT SUBQUERY aSimilarTable2 ALL null null null null 22936 Using where
2 DEPENDENT SUBQUERY aSimilarTable1 ALL null null null null 49734 Using where

最佳答案

使用LEFT JOIN

SELECT a.id, a.idDate, a.idInfo, a.idChecked 
FROM aTable a
LEFT JOIN aSimilarTable1 b ON a.id = b.id
LEFT JOIN aSimilarTable2 c ON a.id = c.id
LEFT JOIN aSimilarTable3 d ON a.id = d.id
LEFT JOIN aSimilarTable4 e ON a.id = e.id

关于选择其他 4 个表中不存在 id 的记录时,MySQL 查询速度变慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34898429/

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