2012-05-04 3 views
0

У меня есть таблица с +/- 80 миллионами строк (разделенная).SQL-индексы на большой таблице: некоторые крупные индексы или более маленькие индексы?

Вставки становятся медленными (около 1-3 секунд). В плане запроса указано, что 68% вставки - clustered index insert, но есть также триггеры в таблице для каждой вставки/обновления и удаления. Поэтому его трудно сказать, что на самом деле вызывает время.

В любом случае, у нас есть некоторые индексы на этой таблице, некоторые из которых содержат 3-5 столбцов.

Что я хочу знать, это то, что лучше, производительность мудрая: Чтобы иметь некоторые индексы с несколькими столбцами в нем или иметь меньшие индексы с меньшим количеством столбцов?

Все советы и предложения приветствуются.

ответ

4

В плане запроса указано, что 68% вставки представляет собой вставку с индексом кластеров, но есть также триггеры в таблице для каждой вставки/обновления и удаления. Поэтому его трудно сказать, что на самом деле вызывает время.

Я думаю, что это довольно очевидно, что это ваши триггеры, вызывающие проблему. Очень маловероятно, что вставка одной строки займет 3 секунды на такой маленькой таблице без триггеров. Вы можете попробовать удалить их и посмотреть, все ли ваши вставки все еще медленны.

Чтобы иметь некоторые индексы с несколькими столбцами в нем или иметь меньшие индексы с меньшим количеством столбцов?

Вы должны посмотреть на свои запросы и посмотреть, какие индексы они используют. Чтобы оптимизировать производительность чтения, вы должны добавить индексы, если может потребоваться медленный запрос - это может быть либо индекс столбца, либо индекс с несколькими столбцами, в зависимости от конкретного запроса. Чтобы оптимизировать производительность записи, вы должны удалить все неиспользуемые индексы.