Некластеризованные индексы замедляют вставки? - PullRequest
5 голосов
/ 25 мая 2010

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

Ответы [ 3 ]

6 голосов
/ 25 мая 2010

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

2 голосов
/ 25 мая 2010

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

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

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

0 голосов
/ 05 марта 2019

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

Эти пулы хранения содержат индексные записи с индексированными значениями и указатели определенного типа на запись базовой таблицы. В случае MySQL этот указатель является ПЕРВИЧНЫМ КЛЮЧОМ базовой таблицы.

Каждый раз, когда вы ВСТАВЛЯЕТЕ или УДАЛЯЕТЕ запись, в этих областях хранения индекса будут добавляться или удаляться новые записи. Если вы ОБНОВЛЯЕТЕ запись - и ОБНОВЛЕНИЕ включает индексированный столбец, соответствующему пулу хранения индекса также необходимо обновить свою запись.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...