最近、ストアド プロシージャに問題があり、動作が遅すぎたため、同僚の 1 人がクロス適用を提案しました。クロス適用は内部結合として機能するが、テーブル間のコマンド キーは必要ないと言いました。
私のシナリオは、私は3つのテーブルを持ってcrossarticle_article
おりcrossarticle_articletocategory
、今は4であるcrossarticle_article
すべてのレコードを取得したいと思っています。categoryid
categoryid
crossarticle_articletocategory
私が理解している限り、以下のクエリを作成しました:
SELECT *
FROM crossarticle_article c
CROSS APPLY
crossarticle_articletocategory cc1
CROSS APPLY
crossarticle_category cc2
WHERE cc2.id = 1
このクエリはcrossarticle_article
、カテゴリ ID が 1 に一致するレコードのみを返す必要がありますが、3 つのテーブルすべてからすべてのレコードを返します。
私が間違っているところ、これがクロス適用の使用方法でない場合、使用方法、およびその利点は何ですか。
クロス適用が同じテーブルで機能するということですか...もしそうなら、シナリオはどうなるでしょうか...