0

重複の可能性:
明示的な SQL 結合と暗黙的な SQL 結合
MySQL クエリでは、なぜ where ではなく join を使用するのですか?

= 演算子を使用したクエリ:-

 Select us.FirstName 
       ,uf.FileTitle 
       ,pq.Question
       ,pa.Answer from
 UserMst us,UploadedFile uf,PollQuestion pq,PollAnswer pa,PollResult pr
 where us.UserId = pr.U_id 
       and uf.FileId=pr.A_id 
       and pq.Q_id=pr.Q_id 
       and pa.A_id=pr.ans_id

Join キーワードを使用したクエリ:-

  Select us.FirstName,uf.FileTitle ,pq.Question,pa.Answer  from 
  PollResult pr join UserMst us on us.UserId = pr.U_id  
           join UploadedFile uf on uf.FileId = pr.A_id 
           join PollQuestion pq on pq.Q_id= pr.Q_id
           join PollAnswer pa on pa.A_id =pr.ans_id

実行力が高いのはどっち?

4

2 に答える 2

1

SQL 2008 では、ほとんど違いはありません。(前者の方法は廃止されるのではないかと思いますが?)

ただし、多くの SQL 実装では、各結合に条件がある場合、後続の結合はより少ない値で結合されるため、わずかに高速になります。

すべての条件を最後に置くと、この最適化は最後まで行われません。そのため、一度にフィルタリングされる行の膨大なリストが作成され、理論的には遅くなります。

たとえば、次のようになります。

テーブル A に 1000 行があり、1000 行の別のテーブル B に結合するが、B の 10 行のみに結合するという結合条件を指定すると、10 行になります。その後、テーブル C に結合すると、10 行しか結合されません。

A から B から C に結合してからフィルター処理すると、1000 行がフィルター処理されます (または、結合によっては 1,000,000 行になる可能性があります)。

したがって、相互実装の互換性と可読性のために、後者のバージョンを使用するのが最善かもしれません。

于 2012-04-04T14:14:33.787 に答える
0

私は結合を好みます。常に結合条件をON句に入れる習慣があるのが最も理にかなっていると思います(外部結合であり、実際にwhere句に入れたい場合を除く)。テーブルが結合されている条件についてクエリを読んでいる人は誰でも、WHERE句が数十行になるのを防ぐのに役立ちます。そのきれいだから

于 2012-04-04T14:15:25.720 に答える