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