0

クエリは同じことを行いますか? 標準は何ですか?

これらのクエリの記述方法のいずれかを変更すると、パフォーマンスが低下しますか?

クエリ 1

   SELECT a.*, b.id AS b_id
     FROM table_a AS a
LEFT JOIN table_b AS b
       ON a.id = b.id

クエリ 2

   SELECT a.*, b.id AS b_id
     FROM table_a a, table_b b
    WHERE a.id = b.id
4

1 に答える 1

5

それらは異なる結果を返します。

LEFT JOIN ステートメントは、table_a id に一致する関連レコードが table_b にない場合でも行を返します。そのため、table_a のすべての行が返され、table_a の一致する行または空白/null の table_b 行のいずれかとペアになります (table_a のその行に対して、table_b に一致する行がない場合)。

2 番目のクエリは、INNER JOIN のショートカットです。このクエリは、条件に一致する行のみを排他的に返しますa.id = b.id。2 番目のクエリは、次のように書くこともできます。

SELECT a.*, b.id AS b_id
FROM table_a a
INNER JOIN table_b b 
ON a.id = b.id

パフォーマンスに関する質問に答えるには、関連する SO スレッドの回答を参照してください

于 2012-11-06T02:36:29.247 に答える