Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Czy kolumna klucza podstawowego Sequential Guid powinna być indeksem klastrowym?

Po pierwsze, aby wyjaśnić, klucz podstawowy i indeks klastrowy to 2 oddzielne i odrębne rzeczy, tj. jedna nie jest połączona z drugą (PK mogą być nieklastrowane, indeksy klastrowe mogą być nie-PK).

Biorąc to pod uwagę, myślę, że pytasz więcej „Czy sekwencyjny identyfikator GUID powinien być używany jako indeks klastrowy”. To załadowane pytanie, ale Kimberly Tripp omówiła to prawdopodobnie najlepszy ze wszystkich, jakie widziałem. Zauważ, że artykuł odnosi się do PK, ale wewnątrz artykułu odnosi się do tego, w jaki sposób rozważanie dotyczy głównie wyboru indeksu klastrowego w porównaniu z PK.

Zakładając, że już zdecydowałeś się na użycie identyfikatora GUID jako klucza klastra (co może, ale nie musi), użycie sekwencyjnego identyfikatora GUID byłoby najprawdopodobniej lepszym wyborem niż niesekwencyjny identyfikator GUID, jednak istnieje co najmniej 1 scenariusz, w którym może być preferowany niesekwencyjny identyfikator GUID (chociaż bardzo rzadki, bardzo zaawansowany scenariusz, w którym musiałbyś zasadniczo zrozumieć swój system i serwer SQL tak dobrze, że nie masz wątpliwości, że należy go użyć - miałby związek z hotspoty na urządzeniu pamięci masowej i rozprzestrzenianie dużych ilości zapisów w różnych lokalizacjach klastra).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przechowuj plik w bazie danych SQL Server przy użyciu .Net MVC3 z Entity Framework

  2. Jak znaleźć zależności klucza obcego w SQL Server?

  3. Policz na podstawie warunku w SQL Server

  4. Jak wstawić rekord i zwrócić nowo utworzony identyfikator za pomocą jednego SqlCommand?

  5. SQL Server konwertuje datetime na int w zapytaniu