sql >> Database teknologi >  >> RDS >> Sqlserver

Skal jeg oprette et indeks for en identitetskolonne i SQL Server, eller oprettes det automatisk?

create table test (Id int identity)
go
sp_help test
The object 'test' does not have any indexes, or you do not have permissions.

No constraints are defined on object 'test', or you do not have permissions.

Som en generel praksis ville du oprette et unikt indeks på din identitetskolonne, dette fremskynder opslag.

Normalt vil du gerne have, at dine identitetskolonner også skal være 'klyngede indekser' (Id int identity primary key er genvejsnotationen), hvilket betyder, at tabellen er lagt ud på disken i samme rækkefølge som din identitetskolonne. Dette optimerer til indstik, da den side, der indsættes i, har en tendens til at være i hukommelsen. I nogle tilfælde, når du laver afstandsopslag meget ofte på andre data i tabellen, kan du overveje at gruppere andre kolonner i stedet for, da SQL Server kun tillader dig ét klynget indeks pr. tabel.



  1. SQL:Opdater en række og returner en kolonneværdi med 1 forespørgsel

  2. Søg på tværs af flere tabeller og vis også tabelnavn i resulterende rækker

  3. postgresql - få en liste over kolonner forskel mellem 2 tabeller

  4. mySQL - Bordlåsning vs rækkelåsning