У меня есть база данных с несколькими десятками таблиц, каждая из которых может варьироваться от нескольких десятков столбцов, но почти ни в одной из них не применяется какой-либо вид индексации. Существуют сотни представлений, хранимых процедур, триггеров и т. Д., Ссылающихся на эти таблицы. Производительность ужасна, если не сказать больше.
Я хотел бы найти способ как можно быстрее и эффективнее проанализировать все таблицы, для которых столбцы запрашиваются чаще всего, что позволило бы мне реализовать индексы там, где это принесет наибольшую пользу.
Многие решения, которые я видел, просто показывают, какие другие объекты ссылаются на таблицу 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
Так что, по крайней мере, я могу создавать индексы, охватывающие наиболее часто используемые столбцы.
Спасибо!