2

こんにちは、複数のテーブルに適したクエリの種類を知りたいです。

例:

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

4 に答える 4

5

それらはまったく同じである必要があります。おそらく、MySQL マニュアルの対応するセクションを読みたいと思うかもしれません(ただし、これは構文に関するものであり、パフォーマンスに関するものではありません)。

于 2011-10-07T10:55:31.233 に答える
4

これら 3 つすべてがまったく同等のものとして解析されると予想されるため、同じように実行されます。後の 2 つのクエリのwhere句は冗長です。

多くの開発者は、最初のクエリの暗黙的な構文よりも明示的な ANSI-92 構文 (後者の 2 つのクエリで使用されている) を好みますが、これはパフォーマンスに影響を与えません。

于 2011-10-07T10:55:44.917 に答える
1

すでに指摘したように、すべての形式は効率に関して同じです。ただし、読みやすさという非常に重要な側面でも異なります。

そのため、inner join構文を使用することを好みます。また、規格で広く使用されている表記法でもあります。

この質問への回答が役に立つかもしれません: SQL 内部結合構文

于 2011-10-07T11:01:59.920 に答える
0

joinは単なるショートカットでinner joinあり、行うfrom table1,table2 whereことも内部結合と同じです ( mysql のドキュメントmysql フォーラムを参照してください)。それらはすべて mysql によって同じように扱われる必要があります (2 番目の構文解析時間はわずかに短いかもしれませんが、無視できる程度です)。

少なくとも、2番目のものである(私の意見では、一部の人は最初のものを好むかもしれません).

于 2011-10-07T10:59:31.123 に答える