索引的思想是用空间换时间, 缺点如果数据量太大,过多索引占用大量磁盘空间,所以一般只对关键字段,经常需要检索的字段设置索引。
- 索引的创建和删除
alter table 'table_name' add index index_name('column')
drop index index_name on 'table_name'
- 工具对索引的支持
索引方式,也是索引的数据结构
- BTREE是用树形结构存储索引信息,大部分数据库系统及文件系统都采用B-Tree或其变种B+Tree作为索引结构。
- HASH结构也可以用作索引存储结构,HASH 可以理解成java中map或者python中字典,key-value结构,sql语句中 =或者 != 用HASH索引性能其实比BTREE高,为什么数据库一般默认还是BTREE,主要支持更复杂的表达式 比如BETWEEN等操作。
索引类型也叫索引种类,为了满足业务
- 唯一索引:加速查询 + 列值唯一(可以有null)
- 主键索引:加速查询 + 列值唯一(不可以有null)+ 表中只有一个
- 组合索引:多列值组成一个索引,专门用于组合搜索,其效率大于索引合并
- 全文索引:对文本的内容进行分词,进行搜索 (高级版本新特性)
- 对应的脚本
1.PRIMARY KEY(主键索引)
mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )
2.UNIQUE(唯一索引)
mysql>ALTER TABLE `table_name` ADD UNIQUE (`column` )
3.INDEX(普通索引)
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` )
4.FULLTEXT(全文索引)
mysql>ALTER TABLE `table_name` ADD FULLTEXT ( `column` )
5.多列索引
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )