Как быстро и эффективно внедрить индексирование по всей базе данных - PullRequest
3 голосов
/ 11 июля 2019

У меня есть база данных с несколькими десятками таблиц, каждая из которых может варьироваться от нескольких десятков столбцов, но почти ни в одной из них не применяется какой-либо вид индексации. Существуют сотни представлений, хранимых процедур, триггеров и т. Д., Ссылающихся на эти таблицы. Производительность ужасна, если не сказать больше.

Я хотел бы найти способ как можно быстрее и эффективнее проанализировать все таблицы, для которых столбцы запрашиваются чаще всего, что позволило бы мне реализовать индексы там, где это принесет наибольшую пользу.

Многие решения, которые я видел, просто показывают, какие другие объекты ссылаются на таблицу A или таблицу B (см. Пример запроса), но мне нужно знать , какие столбцы в таблице A или таблице B наиболее часто используются для основывать индексы от.

SELECT 
    referencing_schema_name, referencing_entity_name, referencing_id, 
    referencing_class_desc, is_caller_dependent
FROM 
    sys.dm_sql_referencing_entities ('[dbo].[T_WAM_application]', 'OBJECT');
GO

Идеальным результатом запроса был бы листинг, в котором я вижу для каждого ссылающегося объекта (представление, триггер, хранимую процедуру и т. Д.) Таблицу и разделенный список столбцов этой таблицы.

Что-то вроде:

Referencing Obj TableName   Columns
---------------------------------------------------------------------------
sp_Sample1      Table_A     Column1, Column2, Column6
sp_Sample2      Table_A     Column1, Column2, Column5, Column6, Column7
sp_Sample2      Table_B     Column1, Column4
sp_Sample3      Table_B     Column2

Это позволило бы мне увидеть, какие столбцы вместе используются / ссылаются вместе, что было бы более точным при формировании эффективных индексов.

Но я также был бы рад увидеть список таблицы, столбца, ссылающегося на объект:

Referencing Obj TableName   Columns
---------------------------------------------------------------------------
sp_Sample1      Table_A     Column1
sp_Sample1      Table_A     Column2
sp_Sample1      Table_A     Column6
sp_Sample2      Table_B     Column1
sp_Sample2      Table_B     Column4
sp_Sample3      Table_B     Column2

Так что, по крайней мере, я могу создавать индексы, охватывающие наиболее часто используемые столбцы.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...