Я пытаюсь ускорить время выполнения моей хранимой процедуры. Одно внутреннее соединение, в частности, занимает около 5 секунд для выполнения. Я посмотрел на план исполнения, и казалось, что горло бутылки было на внутренней стороне.Как я могу улучшить производительность этой хранимой процедуры?
Я попытался создать несколько некустеризованных индексов, так как было 65% затрат на поиск индекса (некластеризованный).
Простите меня, если я не предоставил достаточную информацию, поскольку я не настолько привык к использованию индексов в sql.
Вот запрос, который занимает ~ 5 секунд для выполнения, как таблицы содержат много данных:
INSERT INTO TBL_1(TBL2.COLA, TBL4.COLA, TBL4.COLB, TBL4.COLC, TBL3.COLA)
SELECT TBL2.COLA, TBL4.COLA, TBL4.COLB, TBL4.COLC, TBL2.COLB
FROM TBL_2 TBL2 with(index(idx_tbl2IDX))
INNER JOIN TBL_3 TBL3 with(index(idx_tbl3IDX))
ON TBL2.COLB = TBL3.COLB
INNER JOIN TBL_4 TBL4 with(index(idx_tbl4IDX))
ON TBL3.COLA = TBL4.COLD
AND TBL4.COLA % 1000 = TBL3.COLC
AND TBL4.COLE = 0
WHERE TBL2.COLC = 1
А вот мои индексы (я первоначально только создал один для TBL_4 так как именно там самый большой Стоимость в плане исполнения было, но я в конечном итоге создать один для каждой таблицы, чтобы увидеть, если он сделал никакой разницы, что он не сделал
CREATE NONCLUSTERED INDEX [idx_tbl4IDX]
ON [dbo].TBL_4(COLD, COLA, COLE)
INCLUDE (COLB, COLC);
CREATE NONCLUSTERED INDEX [idx_tbl3IDX]
ON [dbo].TBL_3 (COLB, COLA, COLC)
CREATE NONCLUSTERED INDEX [idx_tbl2IDX]
ON [dbo].TBL_2(COLB, COLC)
INCLUDE (COLA);
Я понимаю, что это может быть немного запутанным, как я переименовал все столбцы и таблицы, если это не имеет смысла, пожалуйста, дайте мне знать, и я попробую d используйте лучшие соглашения об именах.
Я голосую, чтобы закрыть как не по теме, поскольку в коде отсутствует «ошибка», она просто медленнее, чем желания OP. Я думаю, что этот вопрос лучше подходит для dba.stackexchange.com. На их странице справки говорится, что в тематические вопросы входят «Администрирование базы данных, включая настройку и резервное копирование/восстановление, расширенный запрос, включая оконные функции, динамический sql и производительность запросов», – DeanOC