Поля SQL-сервера с наибольшим использованием - PullRequest
1 голос
/ 21 января 2010

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

Ответы [ 5 ]

2 голосов
/ 21 января 2010

Я думаю, что вы смотрите на проблему неправильно.

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

Как только вы определили эти запросы, вы можете проанализировать их планы запросов и создать соответствующие индексы.

Этот SO-ответ может быть полезен: Как я могу регистрировать и находить самые дорогие запросы? (заголовок и теги означают SQL Server 2008, но мой принятый ответ относится к любой версии).

2 голосов
/ 21 января 2010

Взгляните на статью об отсутствующих индексах в SQLServerPedia http://sqlserverpedia.com/wiki/Find_Missing_Indexes

1 голос
/ 21 января 2010

Большинство используемых полей ни в коем случае не являются кандидатами в указатели. Хорошие кандидаты в индексы - это те, которые правильно балансируют дополнительные требования к хранилищу с SARGability и охватом проекции запросов, как описано в Основы проектирования индексов . Вы должны следовать советам, которые дает сам движок, используя функцию Отсутствующие индексы :

Хороший план действий - начать с самых дорогих запросов ввода-вывода, полученных из sys.dm_exec_query_stats , а затем открыть план запроса с помощью sys.dm_exec_query_plan в Management Studio и в верхней части представления плана запроса будет предложенный индекс, а индекс CREATE просто готов к копированию и вставке в исполнение. Фактически вам даже не нужно выполнять запросы, чтобы найти самый дорогой запрос в кэше плана, уже есть отчеты SSMS, которые могут найти его для вас.

0 голосов
/ 21 января 2010

Возможно, вам повезет, если вы найдете в своем коде все запросы, а затем выполните SELECT EXPLAIN по ним. Это должно дать вам несколько ярких цифр, когда запрос плохо проиндексирован. К сожалению, это не даст вам представление о том, какие операторы вызываются чаще всего.

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

0 голосов
/ 21 января 2010

Хотелось бы, чтобы это было так просто ... Вам нужно выполнить поиск для оптимизации запросов SQL. Есть много инструментов, которые можно использовать для того, что вам нужно.

А знание того, какие поля используются часто, мало что говорит вам о том, что вам нужно сделать для оптимизации доступа.

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