Я согласен с Брайаном, у вас должна быть тестовая база данных с тем же объемом данных и запустить изменение индекса. Но я предполагаю, что вы делаете это изменение, потому что думаете, что это ускорит запросы. Вам следует запустить тест производительности (до и после изменения индекса) и убедиться, что ваша оптимизация не станет пессимизацией.
я есть таблица размером 1 Тб, 600 м, в которой неверно выбран индексированные столбцы, в частности кластеризованный индекс столбца первичного ключа, который никогда не используется в запросе выбора.
Я хочу удалить кластеризованный индекс из этой строки и создать его на ряде других строк.
Таблица в настоящее время выглядит так:
colA (PK, nvarchar (3)) [кластерный индекс pt b]
colB (PK, bigint) [кластерный индекс pt a]
colC (DateTime) [некластеризованный индекс]
colD (Деньги) [некластеризованный индекс]
colE (бит) [без индекса]
colF (бит) [без индекса]
colG (int) [без индекса]
больше неиндексированных столбцов
Я хотел бы изменить это, чтобы выглядеть так:
colA (PK, nvarchar (3)) [кластерный индекс pt a]
colB (PK, bigint) [некластеризованный индекс]
colC (DateTime) [некластеризованный индекс]
colD (Деньги) [кластерный индекс pt d]
colE (бит) [кластерный индекс pt b]
colF (бит) [кластерный индекс pt c]
colG (int) [кластерный индекс pt e]
больше неиндексированных столбцов
Два вопроса: 1) Как долго вы предполагаете, что это изменение займет (спецификация сервера в конце сообщения). К сожалению, это живая БД, и у меня не может быть простоев без какой-либо идеи о том, как долго она будет работать.
2) Ужасно ли добавлять столько столбцов в кластерный индекс? Обновления почти никогда не выполняются. Существует много вставок и много селекторов, которые всегда используют все предложенные индексированные строки в качестве параметров выбора.
Спецификация сервера: 5 дисков по 15kRPM в RAID 5, MS-SQL Sever 2005 и некоторые биты для их работы.