В прошлом месяце я пытался улучшить время выполнения хранимой процедуры SQL Server, используемой компанией, в которой я работаю, в попытке сократить время извлечения, созданного в таблице.
Проблема в том, что этот запрос нацелен на миллионы строк в DWH и, кроме того, запрос выполняет агрегирование этих данных.
Создание индексов для таблицы DWH не вариант, поэтому я подумал, что, поскольку хранимая процедура использует временные таблицы, я мог бы создать индексы для них.
Но после нескольких часов попыток и тестированияпроизводительность, я не смог достичь своей цели.
Впервые мне нужно применить индексы к таблице, и даже если я много о них читал, я все еще нахожу некоторыеИз-за трудностей с пониманием сложности индексации таблицы, я не нашел аналогичного сценария.
Что я хочу знать, так это: можно ли применить какой-либо индекс к временной таблице с помощью запроса, которыйвыполняет группирование по всем столбцам, которые существуют в этой таблице.
Вот пример кода:
SELECT
A.College,
A.Department,
A.CourseNumber,
A.Subject,
A.CourseSimple,
A.Section,
A.AcademicYear,
A.Term,
A.TermBeginDate,
A.Item,
A.CourseItemGroup,
A.FullDate,
A.WeekLevel,
B.Instructor,
SUM(A.Minutes) 'Minutes',
COUNT(Distinct A.UserKey) 'Students',
SUM(A.Items) 'Items'
FROM
#TT2 A
INNER JOIN
#TT3 B ON A.RowNumber = B.RowNumber
GROUP BY
A.College,
A.Department,
A.CourseNumber,
A.Subject,
A.CourseSimple,
A.Section,
A.AcademicYear,
A.Term,
A.TermBeginDate,
A.Item,
A.CourseItemGroup,
A.FullDate,
A.WeekLevel,
B.Instructor
Я бы хотел применить индекс к # TT2.