Home > FAQ > Primary Key e Clusterd-Index di una tabella coincidono sempre?

Primary Key e Clusterd-Index di una tabella coincidono sempre?

No necessariamente. Infatti l’indice clustered e la chiave primaria di una tabella sono due cose nettamente distinte fra loro: – la chiave primaria è un vincolo che assicura l’univocità di ogni riga della tabella – un indice clustered è un struttura B+Tree che determina un ordinamento specifico dei dati della tabella nelle pagine di dati. Di fatto, però, SQL Server implementa il vincolo di chiave primaria attraverso un ‘unique index’ di tipo ‘clustered’, a meno che venga prima creata la tabella priva di chiave primaria, quindi aggiunto l’indice clusterd, infine aggiunto il vincolo di chiave primaria che sarà quindi implementata attraverso un ‘unique index’ di tipo ‘non-clustered’

USE tempdb
GO

–creaiamo prima la tabella senza chiave primaria
CREATE TABLE t1 (
    col1 INT NOT NULL,
    col2 NVARCHAR(30) NULL,
)
GO

–quindi l’indice clustered
CREATE CLUSTERED INDEX IX_clustered ON t1 (col2)
GO

–infine aggiungiamo il vincolo di chiave primaria
ALTER TABLE t1
ADD CONSTRAINT PK_t1 PRIMARY KEY (col1)
GO

 

Chi è Davide Mauri

Microsoft Data Platform MVP dal 2007, Davide Mauri si occupa di Data Architecture e Big Data nel mondo dell'IoT. Attualmente ricopre il ruolo di "Director Software Development & Cloud Infrastructure" in Sensoria, societa specializzata nella creazione di Wearables e sensori per l'IoT applicati a tessuti ed oggetti sportivi.

Leggi Anche

Usare json su SQLServer 2005, 2008, 2012 e 2014 .. è possibile!

Vedere il supporto nativo di JSON su SQLServer 2016 (e anche su Azure SQLDatabase) mi …

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

− three = four

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.