Mysql索引Keyname重要性

时间:2012-01-18 04:44:03

标签: mysql indexing

我运行此查询:

SHOW INDEX FROM `tbl_clients`

我回复了这些:

表, NON_UNIQUE, KEY_NAME, Seq_in_index, 列名, 整理, 基数, Sub_part, 空值, INDEX_TYPE, 评论

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

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

所以,我真的需要有人来验证我,或者告诉我。

2 个答案:

答案 0 :(得分:9)

该名称仅供人使用,所以不要担心

答案 1 :(得分:0)

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

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)