作用
- 提高查询速度
- 确保数据的唯一性
- 可以加速表和表之间的连接,实现表与表之间的参考完整性
- 使用分组和排序子句进行数据检索时,可以显著减少分组和排序的时间
- 全文检索字段进行搜索优化
分类
- 主键索引(PRIMARY KEY)
- 特点
- 最常见的索引类型
- 确保数据记录的唯一性
- 确定特定数据记录在数据库中的位置
- 特点
- 唯一索引 (UNIQUE)
- 作用
- 避免用一个表中某数据列中的值重复
- 与主键索引的区别
- 主键索引只能有一个
- 唯一索引可以有多个
- 作用
- 常规索引 (INDEX)
- 作用
- 快速定位特色数据
- 注意
- index 和 key 关键字都可设置常规索引
- 该索引添加的字段应是查询条件的字段
- 不宜添加太多常规索引,影响数据的插入、删除和修改操作
- 定期维护,不然会出现索引失效
- 作用
- 全文索引(FULLTEXT)
- 作用
- 快读定位特定数据
- 注意
- 只能用于 MyISAM 类型的数据表
- 只能用于 CHAR、VARCHAR、TEXT 数据列类型
- 适合大型数据集
- 作用
操作
- 创建索引
`语法` ALERT TABLE 表名 ADD 索引类型 (数据列名)
- 删除索引
`语法` `删除指定表的索引` DROP INDEX 索引名 ON 表名 ALTER TABLE 表名 DROP INDEX 索引名 `删除指定表的主键索引` ALTER TABLE 表名 DROP PRIMARY索引名
- 查看索引
`语法` SHOW INDEX(或 keys) FROM 表名
准则
- 索引不是越多越好
- 不要对经常变动的数据加索引
- 小数据量的表建议不要索引
- 索引一般应加在查找条件的字段
原理
- MyISAM
- 实现
- 索引文件保存数据记录的地址
- 特点
- 主索引和辅助索引在结构上没有任何区别
- 主索引要求key是唯一的,而辅助索引的key可以重复
- 索引方式
- 非聚集索引(数据和索引不是在一起)
- 实现
- InnoDB
- 注意
- InnoDB要求表必须有主键(MyISAM可以么有)
- 请尽量在InnoDB上采用自增字段做表的主键
- 如果表使用自增主键,那么每次插入新的记录,记录就会顺序添加当前索引节点的后续位置,当一页写满,就会自动开辟一个新的页
- InnoDB的辅助索引data域储存相应记录主键的值而不是地址
- 辅助索引的查询过程 > 查询到主键索引 > 通过主键索引查询数据
- 索引方式
- 数据文件(包含了主键索引)本身就是索引文件(主键索引)
- 叶节点包含了完整的数据记录,这种索引叫聚集索引
- 注意