首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在mysql5中加入

在mysql5中加入
EN

Stack Overflow用户
提问于 2009-09-05 16:49:15
回答 3查看 90关注 0票数 2

我见过有人写下下面的查询

代码语言:javascript
复制
SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name

像这样写的

代码语言:javascript
复制
SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name2.column_name =table_name1.column_name

这真的有什么不同吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-09-05 17:00:55

在正常情况下不会。可以想象,可能会有一些足够复杂的查询,比您的示例复杂得多,其中连接优化器将不堪重负,这可能会很重要,但如果这是可能的,您将不得不非常努力地工作。

顺便说一句,你可以把这两个都写成USING (column_name)。:)

为了对这类问题进行DIY分析,我还建议您熟悉一下EXPLAIN

票数 4
EN

Stack Overflow用户

发布于 2009-09-05 17:08:50

这是没有区别的。

代码语言:javascript
复制
table_name1.column_name=table_name2.column_name

代码语言:javascript
复制
table_name2.column_name=table_name1.column_name

也有同样的意思。

连接的“左”部分是引用表,而不是比较--我猜这是您隐含的问题?

票数 7
EN

Stack Overflow用户

发布于 2009-09-05 18:29:51

这可能是个人喜好的问题;我碰巧编写了像您的第二个示例一样的连接,但我不能说我在做这件事上是百分之百一致的。

此外,回到查询优化器不像现在这样智能的旧时代,您可能会发现,在连接表达式或WHERE子句中重新排序操作数可能会产生很大的不同;即,如果操作数按一种方式排序,优化器将使用索引,而不是在操作数颠倒时使用索引。

我想我有一个Oracle7闪回。得躺下来。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1383753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档