2012-04-24 6 views
1

позволяет сказать, что у меня есть таблица вроде этого:Хранилище хранения кластеров SqlServer (> 1 столбцы)?

a | b | c | d 
______________ 
1 | 2 | 4 | 5 
6 | 2 | 5 | 5 
3 | 5 | 2 | 5 

[a] колонка кластерный индекс

поэтому физический порядок, хранимый является:

a | b | c | d 
______________ 
1 | 2 | 4 | 5 
3 | 5 | 2 | 5 
6 | 2 | 5 | 5 

теперь позволяет повысить [a] индекс к [a,c] (все еще в виде кластеров).

сейчас, я не могу udnerstand, как он может быть сохранен, так как [a] столбца уже отсортирован и [c] колонок не может быть отсортирован (потому что сортировка [a] болеет сортировку [c])

так же, как SQLServer будет хранить его ?

2-й вопрос: мне нужно открыть другой индекс для [c]?

+0

Этот clusted индекс (а или а & с) является уникальным? –

ответ

1

Композитные индексы производят lexicographical order: записи дополнительно упорядочены по адресу c, если значения a считаются «равными».

a c 
1 2 
2 3 -- Within this block, records are sorted on [c] 
2 5 -- 
2 7 -- 
3 7 
4 1 
5 6 -- Within this block, records are sorted on [c] 
5 8 -- 

Это то, как словари сортируются.

Вам нужен дополнительный индекс c, если вы хотите, чтобы ускорить выполнение запросов, не связанных с a:

SELECT * 
FROM mytable 
WHERE c = @some_value 
+0

, поэтому [c] будет частью индекса [a, c] для тех запросов, которые используют [a], [c] ............ и [c] будут иметь ДРУГОЙ индекс для запросов, которые использует только [c]? –

+1

'c' будет частью индекса на' (a, c) 'независимо от запросов. Запросы, которые фильтруются на 'a' AND' c' (или только на 'a'), будут использовать индекс на' (a, c) '; запросы, которые фильтруют только на 'c', будут использовать индекс только для' c'. – Quassnoi

+0

Извините за нерелевантный вопрос, bu ti действительно хочет узнать о ** решениях ** для создания индексов. у вас есть полезная ссылка? все ссылки ive найдены об индексировании вообще, а не о решениях. –

2

Я думаю, что вам не хватает чего-то очевидного. Подумайте, что можно было бы ожидать от запроса

select * from myTable 
order by [a], [c] 

Вашего кластерного индекса для столбцов [а, с] даст физическое расположение с тем же порядка.

 Смежные вопросы

  • Нет связанных вопросов^_^