Сколько кластерных индексов может быть в одной таблице?
В SQL Server 2008 сколько кластерных индексов может быть в одной таблице?
5 ответов
Только один; и 999 некластеризованных индексов http://msdn.microsoft.com/en-us/library/ms143432.aspx
Один. Как отмечено здесь:
"Кластерный индекс определяет физический порядок данных в таблице. Кластерный индекс аналогичен телефонному справочнику, в котором данные располагаются по фамилии. Поскольку кластерный индекс определяет физический порядок хранения данных в таблице, таблица может содержать только один кластерный индекс."
Для SQL Server 2005: 1 кластерный индекс + 249 некластеризованный индекс = 250 индексов
Для SQL Server 2008: 1 кластеризованный индекс + 999 некластеризованный индекс = 1000 индексов
1.
Хотя для этого есть определенные причины, может показаться немного странным, что разрешен только один кластерный индекс. Тот факт, что кластерный индекс сортирует данные внутри, на самом деле не объясняет причину наличия только одного такого индекса, поскольку некластеризованные индексы сортируются точно так же, как кластерные. Некластеризованные индексы могут включать все данные таблицы так же, как кластеризованные. Поэтому, по крайней мере, в некоторых случаях вполне разумно создать несколько "кластерных" индексов или просто полностью ликвидировать это различие. Но SQL Server не позволит вам создать более одного.
В sql server только один. DB2 предлагает возможность иметь больше, но по цене: двухмерная кластеризация занимает много памяти (пропорционально квадрату строк)