Может ли создание первичного ключа в таблице #temp увеличить скорость обработки? - PullRequest
1 голос
/ 28 июля 2011

Если вы создаете первичный ключ для большой таблицы #temp, или, возможно, несколько других показателей, каковы потенциальные преимущества в скорости и каковы потенциальные замедления?

Обычно это хорошая идея для этого с большим столом #temp?

Я видел одну статью, на которую ссылается другой вопрос stackoverflow, http://www.sqlteam.com/article/optimizing-performance-indexes-on-temp-tables, но это не дает большого объяснения.

Ответы [ 2 ]

4 голосов
/ 28 июля 2011

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

Однако из-за предупреждений о том, когда создаются планы запросов и т. Д., Это не так просто, как просто использовать create index для временной таблицы позже. В статье в посте обсуждаются способы указания индексов в схеме таблицы с помощью неявных индексов, созданных благодаря использованию первичного ключа и UNIQUE - таким образом, он гарантирует, что планировщик запросов «видит» эту дополнительную информацию.

(Обратите внимание, что статья была написана в 2004 году; SQL Server 2008 может не иметь такой же проблемы. Я не знаю. В любом случае это [умный] прием для получения желаемых результатов.)

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

Удачного кодирования.

1 голос
/ 28 июля 2011

Как правило, если вы собираетесь часто запрашивать эту таблицу, создайте индекс. Если вы просто собираетесь вставить или удалить записи из него, не надо.

В любом случае, тестирование таблицы с индексами и без и сравнение результатов после ее использования - все, что вам нужно для ответа на вопрос:)

...