Когда MS-SQL поддерживает индексы таблиц?

В качестве аргументов допустим, что это для SQL 2005/8. Я понимаю, что когда вы размещаете индексы в таблице для настройки операторов SELECT , эти индексы необходимо поддерживать во время действий INSERT / UPDATE / DELETE . .

Мой главный вопрос таков:

Когда SQL Server будет поддерживать таблицу? индексы?

У меня много последующих вопросов:

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

  • Что происходит в ситуации, когда скрипт имеет несколько операторов против стола, но иначе отчетливые утверждения?

  • Есть ли у сервера интеллект чтобы поддерживать индекс в конце концов операторы выполняются или делает это это для каждого оператора?

Я встречал ситуации, когда индексы удалялись и воссоздались после больших / многих INSERT / UPDATE действий.

  • Это предположительно повлечет за собой восстановление индексы всей таблицы, даже если вы изменить только несколько строк?

  • Будет ли улучшена производительность при попытке сопоставить INSERT и ОБНОВЛЕНИЕ действий в более крупный пакет, скажем, собирая строки для вставки в временная таблица, в отличие от выполнения много меньших вставок?

  • Каким образом сопоставление строк выше сочетается с отбрасыванием индекса по сравнению с потерей обслуживания?

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

Изменить: Я понимаю, что вопросы производительности во многом зависят от количества данных во время вставки / обновления и количества индексов. Опять же, в качестве аргумента, у меня будет две ситуации:

  • Индексная таблица, настроенная для выбирает.
  • Индексная таблица освещения (PK).

Обе ситуации будут иметь большой пакет вставки / обновления, скажем, 10k + строк.

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

Спасибо.

7
задан Adam Houldsworth 21 September 2010 в 15:25
поделиться