サブクエリの代わりにジョインを使用する場合、または同じものである場合、開発者にとっての経験則がありますか?クエリまたはサブクエリを結合する
答えて
RDBMSによって異なります。両方のクエリの実行計画を比較する必要があります。
Oracle 10および11での私の経験では、実行計画は常に同じです。
理論的には、すべてのサブクエリを結合クエリに変更できます。
パフォーマンス面では、最新のDBエンジンでは違いはありません。
サブクエリの問題は、サブクエリセットがキーなしで終了する可能性があるため、それらのサブスクリプションを結合する方がコストがかかることです。
可能であれば、常にJOINクエリを作成し、WHEREではなくON句でフィルタリングしてください(ただし、現代のエンジンはこれに最適化されていますが同じである必要があります)。
多くのものと同様に、それは異なります。 - サブクエリの複雑さはどのくらいですか?クエリ内でサブクエリの実行頻度はどのくらいですか
可能な限り、サブクエリは避けるようにしています。特に、結果セットの各項目に対してサブクエリが実行される場合、大きな結果セットがサブクエリを使用しないことを期待する場合
世話、SQL Serverでの アレックス
は、相関副問合せは、通常参加したり、パフォーマンスのために、多くの場合であっても良く、派生テーブルに参加するよりも悪い行います。私は、何度も何度も実行される必要のあるサブクエリを書くことはほとんどありません。相関サブクエリは、基本的にクエリをカーソルに変換し、一度に1つの行を実行することが多いためです。データベースでは、通常、セットベースの方法で作業を行う方が良いです。
「早すぎる最適化がすべての悪の根源」と認識している場合は、今のところパフォーマンスの影響を無視してみましょう。
もっと明確に見えるものを選択してください。
最初の原則は「クエリを正確に記述する」ことです。第2の原則は、「問合せを簡単かつ明示的に述べる」(通常は選択肢を選択する)です。 3番目は「クエリを効率的に処理できるようにする」ことです。
優れたクエリプロセッサを備えたdbmsの場合、同等のクエリ設計では、同じ(または少なくとも同等に効率的な)クエリプランが生成されるはずです。
初めてMySQLを使用したときの私の最大の不満は、オプティマイザを予期することがどれほど意識されていたかということでした。 Oracle、SQL Server、Informix、およびその他のdbms製品の長い経験の後、私はそのような問題に心配することはめったにありませんでした。新しいバージョンのMySQLではより良いことですが、まだ他のものよりも注意を払う必要があります。
- 1. サブクエリまたはOUTER結合
- 2. 結合クエリをサブクエリに変換する
- 3. このクエリとサブクエリを1つのクエリに結合する
- 4. サブクエリ、1つのクエリの結合
- 5. UPDATEクエリとサブクエリを結合する方法は?
- 6. Codeigniterサブクエリ結合
- 7. 複数のSQLクエリがサブクエリを結合する
- 8. 結合クエリ内でサブクエリを書く方法は?
- 9. WordPress:テーブル結合サブクエリ
- 10. SQLクエリ結合テーブル - サブクエリが1より大きい値を返しました
- 11. 結合によるMysqlサブクエリ
- 12. 複数の結合が左にアクセス/サブクエリを結合します
- 13. Mysqlクエリ - サブクエリが存在する場合は、サブクエリが存在する場合
- 14. 複数のサブクエリ結合によるクエリの最適化
- 15. サブクエリを結合するために変換する
- 16. どちらが速いか:相関サブクエリまたは結合?
- 17. mysql:相関サブクエリおよび/または左結合
- 18. サブクエリまたは結合ステートメントでのトラブルのフィルタリング
- 19. 複数のSQLクエリまたは結合?
- 20. 左外部結合サブクエリ
- 21. LINQ、サブクエリ結果の集合
- 22. Oracle SQL結合サブクエリdblink
- 23. SQL Server:左結合とサブクエリ
- 24. linqサブクエリ結合とグループ
- 25. サブクエリの高速結合
- 26. サブクエリの内部結合
- 27. サブクエリの自己結合
- 28. Sequelize:サブクエリのテーブルの結合
- 29. サブクエリへのSQLの結合
- 30. サブクエリ付きの左結合
相関サブクエリについても同様ですか?なぜあなたは「理論的に」資格を与えられますか?あなたはその質問に対する答えを完了できますか? – dkretz