Вы можете обновить свой ответ, чтобы включить это различие.

я есть таблица с кластерным индексом по двум столбцам - первичный ключ для таблицы. Это определяется следующим образом:

ALTER TABLE Table ADD  CONSTRAINT [PK_Table] PRIMARY KEY CLUSTERED 
(
  [ColA] ASC,
  [ColB] ASC
)WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF) ON [PRIMARY]

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

CREATE CLUSTERED INDEX [IX_Clustered] ON [Table] 
(
  [ColC] ASC,
  [ColA] ASC,
  [ColD] ASC,
  [ColE] ASC,
  [ColF] ASC,
  [ColG] ASC
)WITH (PAD_INDEX  = ON, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF,     DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, FILLFACTOR = 90, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = OFF) ON [PRIMARY]

ALTER TABLE Table ADD CONSTRAINT
  PK_Table PRIMARY KEY NONCLUSTERED 
  (
    ColA,
    ColB
  ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

Я собирался просто удалить кластеризованный индекс PK, затем добавить новый кластеризованный индекс и затем добавить некластеризованный индекс первичного ключа, но я узнал, что удаление существующего кластеризованного индекса приведет к переупорядочению данных таблицы (см. Ответ здесьЧто происходит, когда я удаляю кластерный первичный ключ в SQL 2005), который я не считаю необходимым. Стол сбивает 1 ТБ, поэтому я действительно хочу избежать ненужного переупорядочения.

Мой вопрос заключается в том, как лучше всего перейти от существующей структуры к желаемой структуре?

РЕДАКТИРОВАТЬ: Просто хочу уточнить. Таблица составляет 1 ТБ, и у меня, к сожалению, нет места для создания временной таблицы. Если есть способ сделать это без создания временной таблицы, пожалуйста, дайте мне знать.

Ответы на вопрос(4)

Ваш ответ на вопрос