sql >> Database >  >> RDS >> Sqlserver

Relatie tussen primaire sleutel en geclusterde index

Een primaire sleutel is een logische concept - het is de unieke id voor een rij in een tabel. Als zodanig heeft het een aantal attributen - het mag niet nul zijn en het moet uniek zijn. Aangezien u waarschijnlijk vaak naar records zoekt op basis van hun unieke identificatiecode, zou het natuurlijk goed zijn om een ​​index op de primaire sleutel te hebben.

Een geclusterde index is een fysiek concept - het is een index die de volgorde beïnvloedt waarin records op schijf worden opgeslagen. Dit maakt het een zeer snelle index bij het openen van gegevens, hoewel het het schrijven kan vertragen als uw primaire sleutel geen volgnummer is.

Ja, u kunt een primaire sleutel hebben zonder een geclusterde index - en soms wilt u dat misschien (bijvoorbeeld wanneer uw primaire sleutel een combinatie is van externe sleutels op een samenvoegtabel en u niet wilt dat de schijf shuffle overhead krijgt bij het schrijven).

Ja, u kunt een geclusterde index maken voor kolommen die geen primaire sleutel zijn.



  1. INNER of LEFT Meerdere tabelrecords in één rij samenvoegen

  2. MySQL sluit zich aan bij Case Statements

  3. Trigger met samenvoegen-instructie in orakel

  4. MySQL-trigger krijgt de huidige query die ervoor zorgde dat de trigger werd geactiveerd