Om du bara har 1 rad i tabellen ska kardinaliteten för indexet vara 1, förstås. Det är bara att räkna antalet unika värden.
Om du tänker på ett index som en uppslagstabell baserad på hinkar (som en hash), så är kardinaliteten antalet hinkar.
Så här fungerar det:När du bygger ett index över en uppsättning kolumner (a,b,c,d)
, sedan går databasen över alla rader i tabellen och tittar på de ordnade fyrlingarna av dessa 4 kolumner, för varje rad. Låt oss säga att ditt bord ser ut så här:
a b c d e
-- -- -- -- --
1 1 1 1 200
1 1 1 1 300
1 2 1 1 200
1 3 1 1 200
Så vad databasen tittar på är bara de fyra kolumnerna (a,b,c,d):
a b c d
-- -- -- --
1 1 1 1
1 2 1 1
1 3 1 1
Ser du att det bara finns 3 unika rader kvar? De kommer att bli våra hinkar, men vi återkommer till det. I verkligheten finns det också ett post-ID eller radidentifierare för varje rad i tabellen. Så vår ursprungliga tabell ser ut så här:
(row id) a b c d e
-------- -- -- -- -- --
00000001 1 1 1 1 200
00000002 1 1 1 1 300
00000003 1 2 1 1 200
00000004 1 3 1 1 200
Så när vi bara tittar på de fyra kolumnerna i (a,b,c,d), tittar vi verkligen också på rad-id:
(row id) a b c d
-------- -- -- -- --
00000001 1 1 1 1
00000002 1 1 1 1
00000003 1 2 1 1
00000004 1 3 1 1
Men vi vill göra uppslag efter (a,b,c,d) och inte efter rad-id, så vi producerar något så här:
(a,b,c,d) (row id)
--------- --------
1,1,1,1 00000001
1,1,1,1 00000002
1,2,1,1 00000003
1,3,1,1 00000004
Och slutligen grupperar vi alla rad-ID för rader som har identiska (a,b,c,d) värden tillsammans:
(a,b,c,d) (row id)
--------- ---------------------
1,1,1,1 00000001 and 00000002
1,2,1,1 00000003
1,3,1,1 00000004
Se det? Värdena för (a,b,c,d), som är (1,1,1,1) (1,2,1,1) och (1,3,1,1) har blivit nycklar för vår uppslagstabell i raderna i den ursprungliga tabellen.
Egentligen händer inget av detta, men det borde ge dig en god uppfattning om hur en "naiv" (dvs. rakt fram) implementering av ett index kan göras.
Men slutsatsen är denna:kardinalitet mäter bara hur många unika rader det finns i ett index. Och i vårt exempel var det antalet nycklar i vår uppslagstabell, vilket var 3.
Hoppas det hjälper!