У меня есть таблица 99GB + строки 800GB (и другие таблицы сопоставимого размера). Я хочу удалить существующий кластеризованный PK (воссоздать как некластеризованный) и создать новый кластеризованный индекс. Это для настройки производительности.
Ознакомившись с настройкой и индексированием производительности, я пришел к выводу, что наилучшим выбором может быть воссоздание кластерного индекса по дате, столбец Id (идентификатор). Он будет реорганизовывать таблицу логическим образом с меньшим количеством операций чтения и ввода-вывода.
ALTER TABLE [dbo].[Adventure_works] DROP CONSTRAINT [PK_ADV]
GO
ALTER TABLE [dbo].[Adventure_works] ADD CONSTRAINT [PK_ADV] PRIMARY KEY NONCLUSTERED
(
[id] ASC,
[leg_id] ASC,
[category] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
CREATE CLUSTERED INDEX [IX_Adv_date_id] ON dbo.[Adventure_works](
[biz_date] asc,
[id] asc
)
Перед вышеупомянутыми шагами я также отбрасываю все другие некластеризованные индексы (NCI), поскольку это позволяет избежать перестройки NCI во время удаления / создания CI.
Однако это все еще занимает около 1,5 часов, чтобы завершить операцию.
Есть ли быстрее достичь этого?