このタイプのクエリが何と呼ばれているのかわからないため、適切に検索できませんでした。テーブルが 2 つあり、テーブル A には約 10,000 行あります。テーブル B には可変数の行があります。
テーブル A のすべての結果を取得するクエリを作成したいのですが、列を追加すると、その列の値は、結果がテーブル B にも表示されるかどうかを示すブール値になります。
私はこのクエリを作成しましたが、これは機能しますが遅いです。ブール値を使用するのではなく、0 または 1 になるカウントを使用します。提案された改善は、感謝して受け入れられます。
SELECT u.number,u.name,u.deliveryaddress,
(SELECT COUNT(productUserid)
FROM ProductUser
WHERE number = u.number and productid = @ProductId)
AS IsInPromo
FROM Users u
アップデート
実際の実行計画を有効にしてクエリを実行しましたが、結果を表示する方法がわかりませんが、さまざまなコストは次のとおりです。
ネストされたループ (左半結合): 29%]
クラスター化インデックス スキャン (ユーザー テーブル): 41%
クラスタ化インデックス スキャン (ProductUser テーブル): 29%
数値 users テーブルには 7366 人のユーザーがおり、productUser テーブルには現在 18 行あります (ただし、これは変更され、数千になる可能性があります) 。