Индексы SQL Server 2008 - прирост производительности по запросам против потерь по INSERT / UPDATE - PullRequest
7 голосов
/ 15 июля 2011

Как вы можете определить, перевесит ли производительность, полученная на SELECT путем индексации столбца, потерю производительности на INSERT в той же таблице? Есть ли «переломный момент» в размере таблицы, когда индекс приносит больше вреда, чем пользы?

У меня есть таблица в SQL Server 2008 с 2-3 миллионами строк в любой момент времени. Каждый раз, когда вставка выполняется в таблицу, поиск также выполняется в той же таблице с использованием двух ее столбцов. Я пытаюсь определить, было бы полезно добавить индексы для двух столбцов, используемых в поиске.

Ответы [ 3 ]

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

Как и все, что связано с SQL, зависит :

  • Что это за поля? Varchar? Int? Datetime
  • Есть ли в таблице другие индексы?
  • Вам нужно будет включить дополнительные поля?
  • Что такое кластерный индекс?
  • Сколько строк вставлено / удалено в транзакции?

Единственный реальный способ узнать это - сравнить его. Поместите указатели в указатель и сделайте частый мониторинг или выполните трассировку.

0 голосов
/ 15 июля 2011

случай 1: если таблица является статической и интенсивно запрашивается (например, таблица элементов в приложении «Корзина»), то индексы в соответствующих полях очень полезны.

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

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

Если нет, оставьте это на усмотрение консультанта по настройке запросов.Удачи.

0 голосов
/ 15 июля 2011

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

Иногда чтение или запись должны завершаться в определенное время.

...