Mysql索引Keyname重要性

我运行这个查询:

SHOW INDEX FROM `tbl_clients`

我回来了:

Table,Non_unique,Key_name,Seq_in_index,Column_name,Collation,Cardinality,Sub_part,Null,Index_type,Comment

我非常确定Key_name仅用于人类识别目的 . 但在我开始创建索引之前,我想确定我是正确的 .

如果我是正确的,我打算将主键命名为PRIMARY,而不是Column_name的相同名称 .

所以,我真的需要有人来验证我,否则就告诉我 .

回答(2)

2 years ago

这个名字仅供人类使用,所以不用担心

2 years ago

它将被称为主要的 . 因此,您只能拥有一个主键 . 否则你是对的 - 它只是一个人类可读的名字

CREATE TABLE `foobar` (
  `pk` int(11) NOT NULL,
  `c` char(10) DEFAULT NULL,
  PRIMARY KEY (`pk`),
  KEY `k_foowoo` (`c`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

mysql> show index from foobar;
+--------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table  | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+--------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| foobar |          0 | PRIMARY  |            1 | pk          | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
| foobar |          1 | k_foowoo |            1 | c           | A         |           0 |     NULL | NULL   | YES  | BTREE      |         |               |
+--------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
2 rows in set (0.00 sec)