MySQL索引
MySQL索引的建立对于mysql的高效运行是很重要的,索引可以大大提高MySQL的检索速度。索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。
需要注意的是,过多的使用索引将会造成滥用,虽然索引能大大提高查询速度,但是却会降低更新表的速度(如对表进行insert、update和delete)。因为更新表时,MySQL不仅要保存数据,还要更新一下索引文件。
索引的创建、删除及查看
创建索引的方法有:
(1)创建普通索引
1 | create index index_name on some_table(column_name); |
(2)创建唯一索引
与普通索引类似,不同的是,索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。
1 | create unique index index_name on some_table(column_name); |
(3)删除索引
1 | drop index some_index on some_table; |
(4)查看指定数据库表上的所有索引
1 | show index from some_table; |
创建索引注意事项
(1)对where,on,group by,order by等字句中出现的字段上创建索引
(2)对较小的数据列使用索引,这样会使索引文件更小,同时内存中也可以装载更多的索引键。
(3)为较长的字符串使用前缀索引。
(4)不要过多创建索引,除了增加额外的磁盘空间外,对于DML操作的速度影响很大,因为其每增删改一次就得从新建立索引。
聚集索引与非聚集索引
聚集索引是指数据库表行中数据的物理存储顺序与键值的逻辑(索引)顺序相同。一个表只能有一个聚集索引,因为一个表的物理顺序只有一种情况,所以,对应的聚集索引只能有一个。如果某索引不是聚集索引,则表中的行物理顺序与索引顺序不匹配,与非聚集索引相比,聚集索引有着更快的检索速度。
InnoDB支持聚集索引,而MyISAM不支持聚集索引。MySQL数据表中的自增id字段上就是聚集索引哦。
学习资料参考于:
http://www.runoob.com/mysql/mysql-index.html
https://mp.weixin.qq.com/s/tvfieCo_W_pLQwpLofwT9A