我有一个查询,它对 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 查询计划中显示的统计信息:
这里使用了两个代价高昂的索引查找,上面的索引查找具有以下统计信息:
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 分钟才能执行,我无法弄清楚应该做些什么让它更快,因为查询已经使用了索引搜索。{所有连接都是结果集所必需的}。需要帮忙 !