Ако имате само 1 ред в таблицата, кардиналността на индекса трябва да бъде 1, разбира се. Просто се брои броят на уникалните стойности.
Ако мислите за индекс като таблица за търсене, базирана на сегменти (като хеш), тогава кардиналността е броят на сегментите.
Ето как работи:Когато изграждате индекс върху набор от колони (a,b,c,d)
, след това базата данни преминава през всички редове в таблицата, като разглежда подредените четворки от тези 4 колони за всеки ред. Да приемем, че вашата таблица изглежда така:
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
Така че това, което базата данни разглежда, са само 4-те колони (a,b,c,d):
a b c d
-- -- -- --
1 1 1 1
1 2 1 1
1 3 1 1
Виждате ли, че са останали само 3 уникални реда? Те ще станат наши кофи, но ще се върнем към това. В действителност има и идентификатор на запис или идентификатор на ред за всеки ред в таблицата. Така че нашата оригинална таблица изглежда така:
(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
Така че, когато разглеждаме само 4-те колони на (a,b,c,d), ние наистина разглеждаме и идентификатора на реда:
(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
Но ние искаме да направим търсене по (a,b,c,d), а не по идентификатор на ред, така че произвеждаме нещо подобно:
(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
И накрая, ние групираме всички идентификатори на редове, които имат еднакви (a,b,c,d) стойности заедно:
(a,b,c,d) (row id)
--------- ---------------------
1,1,1,1 00000001 and 00000002
1,2,1,1 00000003
1,3,1,1 00000004
Виж това? Стойностите на (a,b,c,d), които са (1,1,1,1) (1,2,1,1) и (1,3,1,1) се превърнаха в ключове за нашата таблица за търсене в редовете на оригиналната таблица.
Всъщност нищо от това всъщност не се случва, но трябва да ви даде добра представа как може да се направи „наивно“ (т.е. директно) внедряване на индекс.
Но изводът е следният:кардиналността просто измерва колко уникални реда има в един индекс. И в нашия пример това беше броят на ключовете в нашата таблица за търсене, който беше 3.
Надявам се това да помогне!