Mysql查询性能.哪个是最好的



你好,我想知道哪种查询适合多个表。

例如

:

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

哪种查询对性能最好?

它们应该完全相同。也许你想从MySQL手册中阅读相应的章节(只是关于语法,而不是关于性能)。

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

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

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

这就是为什么我更喜欢使用inner join语法。这也是标准中普遍使用的符号。

SQL内连接语法

join只是inner join的快捷方式,并且做from table1,table2 where也与内部连接相同(参见mysql文档和mysql论坛)。它们都应该被mysql以同样的方式处理(第二个的解析时间可能会稍微低一点,但这可以忽略不计)。

至少你应该选择一个更可读的(和可维护的方式),这将是第二个(在我看来,有些人可能喜欢第一个)。

相关内容

  • 没有找到相关文章

最新更新