У меня следующий запрос, который выполняет очень мало и является примером того типа соединений, которые я выполняю во всей системе.
select t1.PrimaryKeyId, t1.AdditionalColumnId
from TableOne t1
join TableTwo t2 on t1.ForeignKeyId = t2.PrimaryKeyId
join TableThree t3 on t1.PrimaryKeyId = t3.ForeignKeyId
join TableFour t4 on t3.ForeignKeyId = t4.PrimaryKeyId
join TableFive t5 on t4.ForeignKeyId = t5.PrimaryKeyId
where
t1.StatusId = 1
and t5.TypeId = 68
Индексы есть во всех столбцах соединения, однако производительность невелика. Проверка плана запроса выявляет много совпадений по хэшу (внутренних объединений), когда я действительно хочу увидеть присоединения с вложенным циклом.
Количество записей в каждой таблице:
select count(*) from TableOne
= 64393
select count(*) from TableTwo
= 87245
select count(*) from TableThree
= 97141
select count(*) from TableFour
= 116480
select count(*) from TableFive
= 62
Как лучше всего повысить производительность запросов такого типа?