Должен ли я удалять и воссоздавать индексы в таблицах каждый раз, когда добавляю в него данные? - PullRequest
0 голосов
/ 10 января 2020

Я сейчас использую MS SQL Сервер, я создал таблицу с индексами на 4 столбца. Я планирую добавлять строки 1 мм каждый конец месяца. Обычно отбрасывают индексы и воссоздают их каждый раз, когда вы добавляете данные в таблицу?

Ответы [ 2 ]

1 голос
/ 10 января 2020

Не воссоздайте индекс. Вместо этого вы можете использовать обновление статистики для вычисления статистики для данного индекса или для всей таблицы:

UPDATE STATISTICS mytable myindex;   -- statistics for the table index
UPDATE STATISTICS mytable;           -- statistics for the whole table
0 голосов
/ 10 января 2020

Я не думаю, что это принято, но это не редкость. Предположительно, база данных не будет использоваться для других задач во время загрузки данных, иначе у вас будут другие проблемы.

Это может сэкономить время и усилия, если вы просто отключите индексы:

ALTER INDEX IX_MyIndex ON dbo.MyTable DISABLE

Более подробную информацию об этом нетривиальном топи c можно найти здесь . Обратите особое внимание на то, что отключение кластеризованного индекса заблокирует весь доступ к таблице (т.е. не делайте этого). Если загружаемые данные упорядочены в порядке [кластеризованного индекса], это может помочь некоторым.

Последнее замечание, проведите некоторое тестирование. 1-миллиметровые строки не кажутся такими уж большими; сэкономленное время может быть использовано при воссоздании индексов.

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