gpt4 book ai didi

mysql - SQL Left Join 需要 12 分钟

转载 作者:行者123 更新时间:2023-11-29 11:46:24 26 4
gpt4 key购买 nike

我有两个表想要比较。这些表具有相同的结构,并且应该完全相同,每个表有 60,000 个条目。但是有些条目不同,我想找到问题。我目前正在尝试对它们中的每一个进行左连接并显示结果。我目前正在获取结果,但每个查询需要 12 分钟。

表 1(temp_entries)

ID | File

表 2 (temp_dir_scan)

ID | File

查询 1(12.25 分钟)

SELECT A.ID, A.File 
FROM temp_entries A
LEFT JOIN temp_dir_scan B ON A.File = B.File
WHERE B.File is Null

查询 2(12.26 分钟)

SELECT A.File 
FROM temp_dir_scan A
LEFT JOIN temp_entries B ON A.File = B.File
WHERE B.File is Null

查询 3(11.54 分钟)

SELECT A.ID, A.File 
FROM temp_entries A
Where A.File not in (select B.File from temp_dir_scan B)

怎么了?或者我可以做些什么来加快速度?完成此任务的合理时间是多少?

以下是结果示例。

1|test.txt
2|test2.txt
45|temp.jpg

最佳答案

正如评论中提到的,您可以尝试执行FULL OUTER JOIN,这是使用下面所示的表的示例(MySQL 没有 FULL 连接,因此使用 UNION 来模拟它)

更新:删除重复列错误

SELECT C.A_ID
, C.A_File
, C.B_ID
, C.B_File
FROM (
SELECT A.ID AS A_ID
,A.File AS A_File
,B.ID AS B_ID
,B.File AS B_File
FROM temp_entries A
LEFT
JOIN temp_dir_scan B
ON A.File = B.File
UNION
SELECT A.ID AS A_ID
,A.File AS A_File
,B.ID AS B_ID
,B.File AS B_File
FROM temp_entries A
RIGHT
JOIN temp_dir_scan B
ON A.File = B.File
) C
WHERE C.A_File IS NULL
OR C.B_File IS NULL

这个SO post提供了有关在 MySQL 中执行FULL OUTER JOINS 的更多信息。

希望这有帮助

注意:不确定与原始查询相比性能提升了多少。

关于mysql - SQL Left Join 需要 12 分钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34864113/

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