Удерживают ли некластеризованные индексы вставку?

Я работаю в Sql Server 2005. У меня есть таблица журнала событий, в которой отслеживаются действия пользователя, и я хочу убедиться, что вставки в таблицу выполняются как можно быстрее. В настоящее время таблица не имеет индексов. Замедляет ли вообще добавление одного некластеризованного индекса вставку? Или только кластерные индексы замедляют вставку? Или мне просто добавить кластерный индекс и не беспокоиться об этом?


person Mike Comstock    schedule 24.05.2010    source источник


Ответы (2)


Кластеризованные или некластеризованные индексы всегда замедляют вставку, поскольку SQL должен поддерживать и таблицу, и индекс. Это замедление в «абсолютном» смысле, и вы можете его не замечать. Я бы добавил любые индексы, необходимые для извлечения ваших данных.

person Josef Richberg    schedule 24.05.2010
comment
Предполагая, что получение более важно, чем скорость записи ... скажем, ваш захват данных из потока UDP и любое замедление записи означает потерю захвата пакетов ... но вам нужно будет только запросить при изобретении контакта с ET ... - person Stephanie Page; 11.08.2010

Да, для обновления любого индекса потребуется некоторое время при выполнении INSERT, UPDATE, DELETE операций. Чем больше у вас индексов, тем больше времени мы говорим.

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

Какую операцию вы выполняете чаще?

person marc_s    schedule 25.05.2010
comment
Я хотел бы знать, что произойдет, если и то, и другое имеет значение одновременно. У меня есть база данных типа хранилища данных, мне нужны очень частые вставки, также мне нужно выполнять запросы отчетов из них. Запросы отчетов нуждаются в некоторых индексах для правильной работы, но это может одновременно замедлить операторы вставки. Я использую MySQL (MISAM). - person Surabhil Sergy; 27.08.2014