У меня есть запрос, который выполняет внутреннее объединение 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: 900 000 строк
- Таблица C: 10 000 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 минутв среднем, и я не могу понять, что должно быть сделано, чтобы сделать это быстрее, так как запрос уже использует поиск индекса.{Все объединения необходимы для набора результатов}.Нужна помощь!