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