回答:
最大カーディナリティ:すべての値は一意です
最小カーディナリティ:すべての値は同じです
一部の列は、一意性などの制約があり、すべての行に同じ値を入力できないため、高カーディナリティ列と呼ばれます。
カーディナリティーは、データのクラスター化、ソート、および検索の機能に影響を与えるプロパティーです。したがって、これはDBのクエリプランナーにとって重要な測定値であり、最適なプランを選択するために使用できるヒューリスティックです。
数学的用語では、カーディナリティは一連の値の値の数です。セットには一意の値のみを含めることができます。例として、セット「A」があります。
セット "A"を次のようにします:A = {1,2,3}-そのセットのカーディナリティは| 3 |です。
セット "A"に5つの値A = {10,21,33,42,57}が含まれている場合、カーディナリティは| 5 |です。
mysqlのコンテキストでそれが意味することは、テーブルカラムのカーディナリティがそのカラムの一意の値の数であるということです。主キー列(例:table.id)のカーディナリティを表示している場合、テーブルの各行に一意のIDが1つあるため、その列のカーディナリティによって、テーブルに含まれる行数がわかります。そのテーブルで "COUNT(*)"を実行して行数を調べる必要はありません。カーディナリティを確認するだけです。
マニュアルから:
カーディナリティ
インデックス内の一意の値の数の推定。ANALYZE TABLEまたはmyisamchk -aを実行すると更新されます。カーディナリティは、整数として保存された統計に基づいてカウントされるため、小さなテーブルの場合でも、値は必ずしも正確ではありません。カーディナリティが高いほど、結合を行うときにMySQLがインデックスを使用する可能性が高くなります。
CREATE TABLE `antest` (
`i` int(10) unsigned NOT NULL,
`c` char(80) default NULL,
KEY `i` (`i`),
KEY `c` (`c`,`i`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
mysql> select count(distinct c) from antest;
+-------------------+
| count(distinct c) |
+-------------------+
| 101 |
+-------------------+
1 row in set (0.36 sec)
mysql> select count(distinct i) from antest;
+-------------------+
| count(distinct i) |
+-------------------+
| 101 |
+-------------------+
1 row in set (0.20 sec)
mysql> select count(distinct i,c) from antest;
+---------------------+
| count(distinct i,c) |
+---------------------+
| 10201 |
+---------------------+
1 row in set (0.43 sec)
mysql> show index from antest;
+--------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+--------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| antest | 1 | i | 1 | i | A | NULL | NULL | NULL | | BTREE | |
| antest | 1 | c | 1 | c | A | NULL | NULL | NULL | YES | BTREE | |
| antest | 1 | c | 2 | i | A | NULL | NULL | NULL | | BTREE | |
+--------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
3 rows in set (0.00 sec)
mysql> analyze table sys_users;
+--------------------------------+---------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+--------------------------------+---------+----------+----------+
| antest | analyze | status | OK |
+--------------------------------+---------+----------+----------+
1 row in set (0.01 sec)
mysql> show index from antest;
+--------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+--------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| antest | 1 | i | 1 | i | A | 101 | NULL | NULL | | BTREE | |
| antest | 1 | c | 1 | c | A | 101 | NULL | NULL | YES | BTREE | |
| antest | 1 | c | 2 | i | A | 10240 | NULL | NULL | | BTREE | |
+--------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
3 rows in set (0.01 sec)