1. 普通索引
基本索引
创建方法
1 | #标准语句: |
- length 表示 length=10,索引字段记录前10个字符
- BLOB和text类型,length不能短于实际长度。CHAR和VARCHAR可以
2. 唯一索引
彼此各不相同的值,必须唯一,可以空值,关键字UNIQUE
保证数据记录的唯一性
1 | ALTER TABLE table_name ADD UNIQUE (column_list) |
3. 主键索引
特殊的唯一索引,不能有空值,常见于id
1 | CREATE TABLE table_name ( |
4. 全文索引
建立索引,在索引中搜索定位
注意
对于较大的数据集,将你的资料输入一个没有FULLTEXT索引的表中,然后创建索引,其速度比把资料输入现有FULLTEXT索引的速度更为快。
不过切记对于大容量的数据表,生成全文索引是一个非常消耗时间非常消耗硬盘空间的做法。插入修改删除表的同时也要针对索引做一系列的处理。
1 | CREATE TABLE `table` ( |
my5.7有了针对中文的全文索引插件
5.聚集索引和非聚集索引
1 | create CLUSTERED INDEX 索引名称 ON 表名(字段名) #创建聚集索引 |
6.单列索引和多列索引
最左匹配原则,
适用场景:
- 全字段匹配
- 匹配部分最左前缀
- 匹配第一列
- 匹配第一列范围查询(可用用like a%,但不能使用like %b)
- 精确匹配某一列和和范围匹配另外一列
1
2
3
4
5
6#假设只使用单列索引名字
ALTER TABLE people ADD INDEX name (name);
#使用多列索引:
#相当于创建了(height)单列索引,(height,name)组合索引以及height,name,age)组合索引
ALTER TABLE people ADD INDEX height_name_age (height,name,age);
#注意: 注:在mysql中执行查询时,只能使用一个索引,如果我们在name,age上分别建索引,执行查询时,只能使用一个索引,mysql会选择一个最严格(获得结果集记录数最少)的索引。