- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这不是 this Q&A 的副本因为这里的问答涉及FROM
子句中提到的表。哪个我的没有。
假设 FROM
子句中的表始终相同并且我永远不会更改它。添加连接的顺序重要吗?
我正在使用内部构建的查询生成器。 (是的,我知道已经有一些东西了,但这超出了问题的范围)。
我希望能够在我的脚本开头设置一些连接,然后根据条件设置一些连接,查询构建器从上到下将它们添加到查询中。不管它们在查询中的顺序如何,SQL 引擎都会优化连接的顺序吗?
例子:
SELECT a.col1, d.col2, c.col1, b.col3
FROM table1 A
INNER JOIN table2 B
ON B.a_id = A.id
LEFT JOIN table3 C
ON C.id = A.c_id
LEFT JOIN table4 D
ON D.id = C.d_id;
SELECT a.col1, d.col2, c.col1, b.col3
FROM table1 A
LEFT JOIN table4 D
ON D.id = C.d_id
INNER JOIN table2 B
ON B.a_id = A.id
LEFT JOIN table3 C
ON C.id = A.c_id;
在这里您可以看到,在脚本 (C)
中声明其从属表的连接之前,我已经声明了 table4 D
的连接。这重要吗?
最佳答案
简单的回答:不,您不能在声明对象之前引用表对象/别名。
mySQL 将在第二次查询时抛出错误。 ‘on 子句’中的未知列‘C.d_id’
所以是的......编译器不会提前查看它是否被稍后引用。它只知道顺序,然后它试图找出哪种连接方法是最好的。
*解决以下问题:无论查询中的顺序如何,SQL 引擎都会优化联接的顺序吗? *
是的,它会优化订单;但是“FROM”命令不能包含对表的引用,否则该表将无法编译。 (例如,参见上面的错误和链接)
关于mysql - SQL 中的连接顺序是否重要(特定于 MySQL)- FROM 子句中的 NOT 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43782913/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 4 年前。
正如您在 this travis.yml 中看到的那样文件,我的代码依赖于一些第三方库,我在构建项目之前将它们安装在远程系统上。 Travis 每次推送提交时都会下载并构建这些库,这可以避免吗?我的意
我是一名优秀的程序员,十分优秀!