什么是MySQL中的PRIMARY索引

时间:2020-03-14 06:19:45

标签: mysql sql mysql-workbench

我刚刚学习了如何在mysql中创建索引并在连接到mysql 8.0实例的mysql工作台中执行了这样的查询:

activityViewController(_:thumbnailImageForActivityType:suggestedSize)

结果网格为:

use test;
create table idx (
id int not null unique,
name char(5),
primary key(id),
key(name)
);
show index from idx;

这让我感到困惑,因为# Table, Non_unique, Key_name, Seq_in_index, Column_name, Collation, Cardinality, Sub_part, Packed, Null, Index_type, Comment, Index_comment, Visible, Expression 'idx', '0', 'PRIMARY', '1', 'id', 'A', '0', NULL, NULL, '', 'BTREE', '', '', 'YES', NULL 'idx', '0', 'id', '1', 'id', 'A', '0', NULL, NULL, '', 'BTREE', '', '', 'YES', NULL 'idx', '1', 'name', '1', 'name', 'A', '0', NULL, NULL, 'YES', 'BTREE', '', '', 'YES', NULL 是主键,所以有两个索引key_name = PRIMARAY和key_name =“ id”。它们之间有什么区别?

2 个答案:

答案 0 :(得分:2)

id索引来自unique列的id选项。 PRIMARY索引来自primary key (id)

由于主键始终是唯一的,因此不需要unique选项,这样就不会创建额外的索引。

答案 1 :(得分:0)

索引可以用表的多列完成,在B +树中有一个带有很多子节点的根键。这意味着当您在索引中搜索某些内容时,首先使用主键进行分类。 假设您有100万个数据,并且索引的主键是名称顺序,是ASC字母顺序。如果您要查找age = 15并且name = John,并且索引的主键是name。数据库引擎将执行以下操作: 检查“ John”开始索引。然后在所有“约翰”中找到15岁的年龄。

如果命名更多标识符,则应使用name作为主键。

选中thisthis

相关问题