Nếu bạn chỉ có 1 hàng trong bảng, tất nhiên, bản số của chỉ mục phải là 1. Nó chỉ đếm số lượng giá trị duy nhất.
Nếu bạn coi chỉ mục là một bảng tra cứu dựa trên các nhóm (như một hàm băm), thì bản số chính là số nhóm.
Đây là cách nó hoạt động:Khi bạn tạo chỉ mục trên một tập hợp các cột (a,b,c,d)
, sau đó cơ sở dữ liệu đi qua tất cả các hàng trong bảng, xem xét các phần tư có thứ tự của 4 cột đó, cho mỗi hàng. Giả sử bảng của bạn trông như thế này:
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
Vì vậy, những gì cơ sở dữ liệu nhìn vào chỉ là 4 cột (a, b, c, d):
a b c d
-- -- -- --
1 1 1 1
1 2 1 1
1 3 1 1
Thấy rằng chỉ còn lại 3 hàng duy nhất? Những thứ đó sẽ trở thành nhóm của chúng ta, nhưng chúng ta sẽ quay lại với điều đó. Trong thực tế, cũng có một id bản ghi hoặc định danh hàng cho mỗi hàng trong bảng. Vì vậy, bảng ban đầu của chúng tôi trông giống như sau:
(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
Vì vậy, khi chúng tôi chỉ xem xét 4 cột của (a, b, c, d), chúng tôi thực sự đang xem xét id hàng:
(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
Nhưng chúng tôi muốn thực hiện tra cứu theo (a, b, c, d) chứ không phải theo id hàng, vì vậy chúng tôi tạo ra một cái gì đó như sau:
(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
Và cuối cùng, chúng tôi nhóm tất cả id hàng của các hàng có giá trị đồng nhất (a, b, c, d) với nhau:
(a,b,c,d) (row id)
--------- ---------------------
1,1,1,1 00000001 and 00000002
1,2,1,1 00000003
1,3,1,1 00000004
Thấy chưa? Các giá trị của (a, b, c, d), là (1,1,1,1) (1,2,1,1) và (1,3,1,1) đã trở thành khóa cho bảng tra cứu của chúng tôi vào các hàng của bảng gốc.
Trên thực tế, không có điều nào trong số này thực sự xảy ra, nhưng nó sẽ cung cấp cho bạn một ý tưởng hay về cách triển khai một chỉ mục "ngây thơ" (tức là nói thẳng) có thể được thực hiện.
Nhưng điểm mấu chốt ở đây là:cardinality chỉ đo lường số lượng hàng duy nhất có trong một chỉ mục. Và trong ví dụ của chúng tôi, đó là số lượng khóa trong bảng tra cứu của chúng tôi, là 3.
Hy vọng điều đó sẽ hữu ích!