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

Czy indeksy klastrowe muszą być unikatowe?

Oni nie mają być wyjątkowym, ale z pewnością jest to zalecane.
Nie spotkałem się jeszcze ze scenariuszem, w którym chciałem utworzyć CI na nieunikalnej kolumnie.

Co się stanie, jeśli utworzysz element CI w nieunikalnej kolumnie

Czy to prowadzi do złej wydajności?

Dodawanie unikatowego z pewnością dodaje trochę narzutu przy obliczaniu i przechowywaniu go.
To, czy ten narzut będzie zauważalny, zależy od kilku czynników.

  • Ile danych zawiera tabela.
  • Jaka jest szybkość wstawiania.
  • Jak często CI jest używany w selekcji (gdy nie istnieją indeksy pokrywające, prawie zawsze).

Edytuj
Jak zauważył Remus w komentarzach, istnieją przypadki użycia, w których stworzenie nieunikalnego CI byłoby rozsądnym wyborem. To, że nie spotkałem się z jednym z tych scenariuszy, pokazuje jedynie mój własny brak narażenia lub kompetencji (wybierz swój wybór).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Inspekcja schematu serwera SQL?

  2. SQL Server:użyj parametru w CREATE DATABASE

  3. SQL Server zapytanie o atrybut xml dla wartości elementu

  4. SQL SERVER Pełny dziennik transakcji

  5. Sposoby migracji bazy danych SQL Server do Azure SQL Database