实现原理:https://www.cnblogs.com/songwenjie/p/9415016.htm
索引数据结构:https://www.cnblogs.com/songwenjie/p/9414960.html
1.什么是索引:
MySQL官方对索引的定义:索引(Index)是帮助MySQL高效获取数据的数据结构。
提取句子的主干,就可以得到索引的本质:索引就是数据结构。
2.索引的分类
在一个表中,主键索引只能有一个,而唯一索引可以有多个
- 主键索引(PRIMARY KEY)
特点:唯一标识,不可重复。只能有一列作为主键,且主键不可为Null。
-
唯一索引(UNIQUE KEY)
特点:避免重复的列出现,唯一索引可以重复,多个列都可以标识为 唯一索引。
-
常规索引(KEY/INDEX)
特点:默认的,index。key关键字来设置
-
全文索引(FullText)
特点:在特定的数据库引擎下才有,MyISAM,可以快速定位数据
3.MySQL索引创建与使用(基础语法)
参考博客:https://blog.csdn.net/justry_deng/article/details/81458470
索引一旦创建则不能修改,如果要修改索引,只能删除重建。可以使用DROP INDEX index_name ON table_name; 删除索引。
4.索引优势和劣势
优势:1.提高数据的检索效率,降低数据库IO成本。 2.降低数据排序的成本,降低CPU的消耗。
劣势:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。
5.索引使用原则
1.不要对进行变动的数据加索引 比如:插入删除更新
2.小数据量的表不需要加索引
3.索引一般加在常用来查询的字段上!