gpt4 book ai didi

MySQL 通过列的顺序同步和 WHERE 子句条件进行查询优化

转载 作者:行者123 更新时间:2023-11-29 07:19:12 25 4
gpt4 key购买 nike

假设我有四个表的联接,表 1 通过外键关系引用其他 3 个表(表2、3、4):

SELECT a.column_a, b.column_b, c.column_c, d.column_d
FROM Table1 a, Table2 b, Table3 c, Table4 d
WHERE a.col1_fk=d.col_id
AND a.col2_fk=c.col_id
AND a.col3_fk=b.col_id

为了对上述语句进行最佳优化,连接条件是否应该与 SELECT 语句的列的顺序相同?因此,我上面的例子是最不优化的吗?或者所说的顺序并不重要?

最佳答案

这并不重要。查询优化器决定首先读取哪个表。
当数据大小增长时,这也可能会发生变化。例如,有一天,您的 WHERE 子句过滤了表的 90%,因此 MySQL 决定首先读取该表。一千次 INSERT 后,相同的 WHERE 子句可能只过滤 1%。那么MySQL可能会决定最后读取它,甚至进行全表扫描。

不用担心这种优化。如果您想优化,请阅读 EXPLAIN (除了使用 if 和哪些索引之外,它还显示了读取表的顺序)和 learn to use indexes正确地。

并且,无意冒犯,您真正应该学习的是 1992 年随 ANSI SQL 标准引入的正确联接语法。Here是一些例子。

关于MySQL 通过列的顺序同步和 WHERE 子句条件进行查询优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36763451/

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