gpt4 book ai didi

mysql - 编写SQL其他优化方式

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

我有以下查询,我的写法如下。实际上,我想得到两个差异。颜色表中的颜色。请研究一下,你能告诉我这是优化的方式吗?我可以在下面写查询其他优化方式吗?

SELECT d.*, 
(SELECT c.clr_title FROM colors AS c WHERE c.id = d.base_color_id) AS base_color,
(SELECT c.clr_title FROM colors AS c WHERE c.id = d.overlay_color_id) AS overlay_color
FROM indira.dress AS d
WHERE id=669;

感谢您的帮助。

最佳答案

这是获得等效结果的另一种方法:

SELECT d.*
, b.clr_title AS base_color
, o.clr_title AS overlay_color
FROM indira.dress d
LEFT
JOIN colors b ON b.id = d.base_color_id
LEFT
JOIN colors o ON b.id = d.overlay_color_id
WHERE d.id=669

对于大型集合,SELECT 列表中的相关子查询可能会很昂贵。但对于返回单行,这不会成为性能问题,因为这些子查询只会执行一次。

在更一般的情况下,对于返回大量行,使用 JOIN 通常更有效。

您可能已经有了合适的索引。为了获得最佳性能,您需要一个索引ON indira.dress(id)(可能已经是主键)和ON Colors (id)(同样,可能已经是主键)首要的关键)。添加覆盖索引可能不会带来性能优势。

关于mysql - 编写SQL其他优化方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17794540/

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