Если я устанавливаю сжатие (либо страницу, либо строку) для кластеризованного индекса таблицы, это то же самое, что установка сжатия для таблицы?
Да.
Из MSDN :
Используйте синтаксис REBUILD WITH, чтобы перестроить всю таблицу, включая все разделы в многораздельной таблице. Если таблица имеет кластеризованный индекс, опция REBUILD перестраивает кластеризованный индекс.
SQL Server предоставляет варианты для того и другого, что говорит о том, что они разные
Причина существования обоих синтаксисов заключается в том, что таблица не обязательно имеет кластеризованный индекс. Другими словами, ALTER INDEX ALL ON ... REBUILD
не влияет на кучу (хотя она затронет все некластеризованные), поэтому другой маршрут служит этой цели.
Кроме того, хотя документация явно не говорит об этом, ALTER TABLE ... REBUILD
синтаксис не включает / отключает сжатие всех некластеризованных индексов в таблице. Это влияет только на кучу или кластерный индекс.
Наконец, если вы тестируете это через SSMS, имейте в виду, что при отключении сжатия вы можете получить ошибки - разберитесь со сценариями, чтобы вы могли видеть, что на самом деле происходит.
Кластерный индекс - это таблица. Таким образом, установка его на то же самое. Вы можете проверить это, сравнив оба случая здесь:
SQL Server также предоставляет несколько разных способов сделать столбец уникальным:
...или...
...или...
...или...
Все они в конечном итоге будут иметь одну и ту же базовую реализацию (с разными именами).
То, что есть разные способы добраться до работы, не означает, что вы все равно не окажетесь в офисе. :-)
источник