Mysql查询性能。哪一个最好?

时间:2011-10-07 10:45:59

标签: mysql sql performance mysql5

您好我想知道哪种查询适用于多个表格。

例如:

select table1.id, table1.name from table1,table2,table3 
where table1.id=table2.id and table2.id=table3.id

select table1.id, table1.name  
from table1 
inner join table2 on table1.id=table2.id 
inner join table3 on table2.id=table3.id 
where 1

select table1.id, table1.name 
from table1 
join table2 on table1.id=table2.id 
join table3 on table2.id=table3.id 
where 1

哪种查询最适合提高效果?

4 个答案:

答案 0 :(得分:5)

他们应该完全一样。可能你可能想要阅读MySQL手册中的corresponding section(这只是关于语法,而不是关于性能)。

答案 1 :(得分:4)

我希望所有这三个都被解析为完全等效,因此会执行相同的操作。后两个查询中的where子句是多余的。

许多开发人员更喜欢显式的ANSI-92语法(在后两个查询中使用)而不是第一个查询中的隐式语法 - 但是,这应该对性能没有影响。

答案 2 :(得分:1)

正如已经指出的那样,所有形式的效率都是相同的。然而,它们在一个非常重要的方面是不同的:可读性。

这就是我更喜欢使用inner join语法的原因。它也是标准中普遍存在的符号。

您可能会发现此问题的答案很有用:SQL Inner Join syntax

答案 3 :(得分:0)

join只是inner join的快捷方式,而from table1,table2 where也与内部联接相同(see mysql documentationmysql forum)。它们都应该被mysql以相同的方式处理(第二个的解析时间可能稍微低一点,但这可以忽略不计)。

至少你应该选择那个更可辐射(并且可维护的那个)的第二个(在我看来,有些人可能会喜欢第一个)。

相关问题