gpt4 book ai didi

mysql - 使用多个 JOIN 查询 1k 条条目最多需要 10 秒

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

这是该结构的简化版本(省略了一些常规 varchar col):

CREATE TABLE `car` (
`reg_plate` varchar(16) NOT NULL default '',
`type` text NOT NULL,
`client` int(11) default NULL,
PRIMARY KEY (`reg_plate`)
)

这是我尝试运行的查询:

SELECT * FROM (
SELECT
car.*,
tire.id as tire,
client.name as client_name
FROM
car
LEFT JOIN client ON car.client = client.id
LEFT JOIN tire ON tire.reg_plate = reg_plate
GROUP BY car.reg_plate
) t1

嵌套查询是必要的,因为框架有时会添加 WHERE/SORT 子句(假设存在名为 client_nametire 的列)。cartire 表都有大约。 1,5K 条目。 client 不超过 500,并且由于某种原因,它仍然需要长达 10 秒才能完成(更糟糕的是,框架运行它两次,首先检查有多少行,然后实际限制为请求的页面)

我感觉这个查询效率很低,我只是不知道如何优化它。

提前致谢。

最佳答案

首先,阅读 MySQL's EXPLAIN syntax .

您可能需要在连接子句中的每一列上以及您的框架在 WHERE 和 SORT 子句中使用的每一列上建立索引。有时多列索引比单列索引更好。

您的框架可能不需要嵌套查询。取消嵌套并创建 View 或将参数传递给存储过程可能会给您带来更好的性能。

为了获得有关 SO 的更好建议,请始终在问题中包含 DDL 和示例数据(作为 INSERT 语句)。您可能还应该包含有关性能问题的 EXPLAIN 输出。

关于mysql - 使用多个 JOIN 查询 1k 条条目最多需要 10 秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6958855/

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