В качестве аргументов допустим, что это для SQL 2005/8. Я понимаю, что когда вы размещаете индексы в таблице для настройки операторов SELECT
, эти индексы необходимо поддерживать во время действий INSERT
/ UPDATE
/ DELETE
. .
Мой главный вопрос таков:
Когда SQL Server будет поддерживать таблицу? индексы?
У меня много последующих вопросов:
Я наивно предполагаю, что это произойдет после выполнения команды. Допустим, вы вставляете 20 строк, индекс будет сохранен после того, как 20 строк будут вставлены и зафиксированы.
Что происходит в ситуации, когда скрипт имеет несколько операторов против стола, но иначе отчетливые утверждения?
Есть ли у сервера интеллект чтобы поддерживать индекс в конце концов операторы выполняются или делает это это для каждого оператора?
Я встречал ситуации, когда индексы удалялись и воссоздались после больших / многих INSERT
/ UPDATE
действий.
Это предположительно повлечет за собой восстановление индексы всей таблицы, даже если вы изменить только несколько строк?
Будет ли улучшена производительность
при попытке сопоставить INSERT
и
ОБНОВЛЕНИЕ
действий в более крупный пакет,
скажем, собирая строки для вставки в
временная таблица, в отличие от выполнения
много меньших вставок?
Извините за множество вопросов - я всегда знал, что это нужно делать, но когда я пытаюсь настроить сценарий для получения баланса, я обнаружил, что на самом деле не знаю, когда происходит обслуживание индекса.
Изменить: Я понимаю, что вопросы производительности во многом зависят от количества данных во время вставки / обновления и количества индексов. Опять же, в качестве аргумента, у меня будет две ситуации:
Обе ситуации будут иметь большой пакет вставки / обновления, скажем, 10k + строк.
Редактировать 2: Я знаю, что могу профилировать данный сценарий на наборе данных. Однако профилирование не говорит мне, почему один подход быстрее другого. Меня больше интересует теория, лежащая в основе индексов и причины проблем с производительностью, а не окончательный ответ «это быстрее, чем это».
Спасибо.