Я работаю в SQL-сервере 2005. У меня есть таблица журнала событий, которая отслеживает пользовательские действия, и я хочу удостовериться, что вставляет в таблицу, максимально быстро. В настоящее время таблица не имеет никаких индексов. Добавление единственного некластерного индекса замедляются, вставляет вообще? Или это - только кластерные индексы, которые замедляются, вставляет? Или я должен просто добавить кластерный индекс и не волноваться об этом?
Кластерные или некластеризованные индексы всегда будут замедлять вставку, поскольку SQL должен поддерживать и таблицу, и индекс. Это замедление в «абсолютном» смысле, и вы можете его не замечать. Я бы добавил любые индексы, необходимые для извлечения ваших данных.
Да, любой индекс будет занимать немного времени для поддержания актуальности при выполнении операций INSERT, UPDATE, DELETE
. Чем больше у вас индексов, тем о большем времени идет речь.
Но в конечном итоге все зависит от того, что для вас важнее - хорошая производительность запроса (тогда добавляйте индексы по мере необходимости) или хорошая производительность вставки (тогда имейте как можно меньше индексов).
Какую операцию вы выполняете чаще?