Nie ma znaczenia - ale czy DateTime naprawdę gwarantuje wyjątkowość? Unikałbym wstawiania indeksu klastrowanego tylko do DateTime - zamiast tego używałbym IDENTYFIKACJI INT IDENTITY lub BIGINT i umieściłem regularny indeks nieklastrowy na DateTime (ponieważ to naprawdę nie gwarantuje, że jest unikatowe ......)
Marc
PS: Like klucz podstawowy, ogólny konsensus co powinno być skupione kluczem jest:
- wyjątkowy (w przeciwnym razie SQL Server będzie "uniquify" go przez dodanie 4- unikalny bajt)
- jako wąskie możliwie
- statycznej (nigdy się nie zmieniają)
- kiedykolwiek rosnącej
kolumny (ów), które składają się na klastrowego klucza (w tym uniqueifier 4-bajtowy) są dodawane do KAŻDY WEJŚCIE W KAŻDYM indeksie nieklastrowym - więc chcesz zachować te szczupłe, jak to możliwe.
PS 2: klucze do klastrowania są dodawane do każdego indeksu nieklastrowego, ponieważ jest to sposób, w jaki program SQL Server pobierze całe wiersze po znalezieniu wartości wyszukiwania w indeksie nieklastrowanym. Jest to "lokalizacja" wiersza w bazie danych, że tak powiem. Dlatego powinien być unikalny i wąski.
Więc indeks klastrowany musi być unikatowy? – Eyvind
Jeśli jest to * NIE * unikatowe, SQL Server automagicznie doda czterobajtowy "unikatnik" - jeśli to możliwe, staraj się tego unikać! –
Dzięki, nie wiedziałem tego. Tak więc, biorąc pod uwagę, że dana tabela ma PK będący unikalnym identyfikatorem, czy lepiej byłoby utworzyć indeks klastrowany w polu datetime ORAZ PK? – Eyvind