私は13 LEFT OUTER JOINSを使用しているクエリを持っています。左のテーブルは大きなデータを持っているため、クエリを実行して結果を返すのに非常に時間がかかります。 しかし、where句を使用して結果をフィルタリングすると、時間がかかりません。 私はまず最初に実行されることについて混乱します:結果を生成する結合とそれからwhere句のフィルタリング、または最初に結果をフィルタリングして結果の結合を取ります。これは最初に実行されます:joinまたはwhere句
10
A
答えて
10
一般的に、どのようなDBMS(SQLなど)も独自のクエリ最適化を行います。これは、最も高速だと思うアルゴリズムを使用します。だから、それはフィルタリングしてから参加します。
2
読む:which one runs first in query execution WHERE CLAUSE orJOIN CLAUSE ?
と
私はPinalデイブのポストをレディングしていると私はこれを見つけた、それはあなたが理解する助けをtalso migh
ON句を理解するこれはJOINの前に適用されるため、Flag = 1のTable2のすべての結果を取得しますが、Table1のすべての行を取得するようにTable1に影響しません。 WHERE句が適用されると、結果は完全な結果に適用され、Flagが1に等しくないTable1とTable2からすべての行が削除され、基本的にTable1とTable2からフラグ= 1の行が保持されます。
2
Copied from my previous answer
create table A(id int);
create table B(id int);
INSERT INTO A VALUES(1);
INSERT INTO A VALUES(2);
INSERT INTO A VALUES(3);
INSERT INTO B VALUES(1);
INSERT INTO B VALUES(2);
INSERT INTO B VALUES(3);
SELECT * FROM A;
SELECT * FROM B;
id
-----------
1
2
3
id
-----------
1
2
3
フィルタにJOIN処理中に追加された行を防止するためにJOIN。
select a.*,b.*
from A a left join B b
on a.id =b.id and a.id=2;
id id
----------- -----------
1 NULL
2 2
3 NULL
JOINが発生した後でフィルタリングします。
select a.*,b.*
from A a left join B b
on a.id =b.id
where a.id=2;
id id
----------- -----------
2 2
関連する問題
- 1. ハイブラテラルビューExplode with where句 - 最初に実行されるもの
- 2. return句は常に最初に実行されますか?
- 3. トリミングされた文字列でWHEREステートメントまたはJOIN ONを実行する
- 4. scheduleAtFixedRateは最初の実行後に実行されません
- 5. JOINまたはIN句をよりよく実行します
- 6. where句で実行されるto_dateは何回ですか?
- 7. JOINのMySQL WHERE句
- 8. SQL - LEFT JOINとWHEREステートメントは最初の行を表示する
- 9. 最初のLEFT JOINは複数のJOINに適用されますか?
- 10. マップ関数は常に最初に実行されます
- 11. このWHERE句とこのJoinの違いは何ですか?
- 12. jQueryは最初のクリックでは実行されませんが、2回目には実行されません。
- 13. IS NULLチェックはWHERE句と比較してON句で劣悪に実行されます
- 14. インデックスマッチWhere句が適用されます
- 15. forループでネストされたPythonは最初から実行されません
- 16. NATURAL JOINとWHERE IN句
- 17. inner join querydsl with where句
- 18. フィルタright join data where句
- 19. Updateまたはwhere句
- 20. Eager Load Active Record Association with WHERE where Join句
- 21. JOIN句とWHERE句の比較
- 22. Javascript for forループは最初から実行されます
- 23. なぜこのmySQL LEFT JOINは機能しませんか? WHERE句にすることはできますか?
- 24. symfonyのカスタマイズされたコマンドは、最初の実行後に停止します
- 25. locationManager(_:変更を承認しました:)は、アプリを最初に実行すると実行されますか?
- 26. 最初のAJAXの例は実行されません
- 27. PostgreSQLストアドプロシージャのIF句でWHERE句を実行できますか?
- 28. 2つのネストされたWHERE句を使用していますか?ここ
- 29. Cassandraはwhere句でクエリを実行することを拒否します
- 30. Where句でIQueryableが実行されるのはなぜですか?
サーバがその仕事をより簡単に行うことができるように関係なく、SQL Serverのクエリオプティマイザは、周りのあなたの手順をシャッフルすることを選択したかの、あなたができる最善のことは、適切にあなたのデータを維持し、インデックスさを覚えておいてください。 –
よく管理された 'STATISTICS'も役立ちます。 – MarkD
あなたはあなたが情報を持っている場合、upvoteに忘れて、受け入れられたとマークしないでください –