gpt4 book ai didi

mysql - LEFT JOIN 运行速度非常慢,但嵌套 select 却不会

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

我听说 JOINS 效率更高,但是当我尝试实现它时,SELECT 就会卡在执行中。

我正在使用 MySQL,并且有两个表,其中包含 100,000 条记录,并带有一个 for 循环。

CREATE TABLE `offers` (
`id` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY(`id`)
);

CREATE TABLE `files` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`path` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`object_id` int(11) NOT NULL,
PRIMARY KEY(`id`)
);

以下查询需要 0.3 秒执行:

SELECT o.id, (SELECT f.path FROM `files` AS f WHERE f.object_id = o.id LIMIT 1) as path FROM `offers` AS o;

但是,当文件表几乎为空时,此查询将以完全相同的方式工作。但是当我填充文件表时,执行从未完成。

SELECT o.id, f.path FROM `offers` o LEFT OUTER JOIN `files` f ON f.object_id = o.id

我做错了什么?

最佳答案

左连接性能

SELECT o.id, f.path 
FROM `offers` o
LEFT OUTER JOIN `files` f ON f.object_id = o.id

确保你有一个复合索引

  on table files column(object_id, path)

关于mysql - LEFT JOIN 运行速度非常慢,但嵌套 select 却不会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56155237/

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