MySQL5种索引类型

MySQL的类型主要有五种:主键索引、唯一索引、普通索引、空间索引、全文索引

有表:

CREATE TABLE `t1` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
`u1` int unsigned NOT NULL DEFAULT '0',
`u2` int unsigned NOT NULL DEFAULT '0',
`u3` varchar(20) NOT NULL DEFAULT '',
`u4` varchar(35) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB

主键索引:

# 查看创建的索引关键词
PRIMARY KEY (`id`)

唯一索引;

# 创建唯一索引
mysql> alter table t1 add unique idx_u1(`u1`);

# 查看创建的索引关键词
UNIQUE KEY `idx_u1` (`u1`)

单列索引

  • 即索引创建在单个列上

  • # 创建单列索引
    mysql> alter table t1 add index idx_u1(`u1`);
    
    # 查看创建的索引关键词
    KEY `idx_u1` (`u1`)

    多列索引

  • 创建多列索引时记得遵循最左匹配原则,把区分度较高的字段放前面

  • # 创建多列索引
    mysql> alter table t1 add index idx_u1_u2(`u1`,`u2`);
    
    # 查看创建的多列索引关键词
    KEY `idx_u1_u2` (`u1`,`u2`)

    前缀索引

  • 即当字段的长度超过索引限制,可以为字段的部分前缀创建索引

  • # 创建前缀索引,取字符串的前4个字符
    mysql> alter table t1 add index idx_u3(`u3`(4));
    
    # 查看创建的索引关键词
    KEY `idx_u3` (`u3`(4))

    倒序索引

  • 8.0 版本出的新功能,以往创建倒叙索引可以创建成功,但实际上仍然是顺序的

# 5.7 创建倒序索引
mysql> select u1 from t1 limit 10;
+----+
| u1 |
+----+
| 12 |
| 23 |
| 12 |
| 34 |
+----+
10 rows in set (0.00 sec)
# 创建倒序索引
mysql> alter table t1 add index idx_u3(u3 desc);
# 实际查出来还是顺序
mysql> select u1 from t1 limit 10;
+----+
| u1 |
+----+
| 12 |
| 12 |
| 12 |
| 12 |
+----+

# 8.0 创建倒序索引
mysql> select u1 from t1 limit 5;
+----+
| u1 |
+----+
| 12 |
| 23 |
| 12 |
| 34 |
+----+
5 rows in set (0.00 sec)

# 添加索引
mysql> alter table t1 add index idx_u1(u1 desc);

# 查询倒序索引成功
mysql> select u1 from t1 limit 5;
+----+
| u1 |
+----+
| 74 |
| 74 |
| 74 |
| 74 |
+----+
5 rows in set (0.00 sec)

 

你可能感兴趣的:(总结,数据库,mysql)