3 つのテーブルの内部結合を行うクエリがあります。
SELECT DISTINCT A.ID, <OTHER 'A' FIELDS>
FROM C
LEFT JOIN B ON C.Bin_ID = B.Bin_ID
LEFT JOIN A ON B.App_ID = A.App_ID
WHERE
((A.App_NAME LIKE '%%') AND (B.App_ID IS NOT NULL))
ORDER BY
A.App_NAME ASC
言及されたテーブルに存在するデータ->
- テーブル A: 8000 行
- 表 B: 900000 行
- 表 C: 10,00,000 行
以下は、SQL Server クエリ プランから明らかになった統計です。
ここでは、コストのかかる 2 つのインデックス シークが使用されています。上位のインデックス シークには、次の統計があります。
Object: B.App_ID [non clustered index, non unique]
Seek Predicate: B.App_ID = A.App_ID[clustered index,unique]
ボトム インデックス シークには次の統計があります。
Object: C.Bin_ID [non clustered index, non unique]
See Predicate: C.Bin_ID = B.Bin_ID[clustered index,unique]
現在、このクエリの実行には平均で 5 分かかりますが、クエリが既にインデックス シークを使用しているため、実行を高速化するために何をすべきかを理解できません。{結果セットにはすべての結合が必要です}。助けが必要 !