索引介绍
索引是什什么
官⽅方介绍索引是帮助MySQL⾼高效获取数据数据结构。更更通俗的说,数据库索引好⽐比是⼀一本书前
⾯面的⽬目录,能
加快数据库的查询速度
⽅方便便查找
检索
索引查询内容
覆盖索引
排序
⼀一般来说索引本身也很⼤大,不不可能全部存储在内存中,因此
索引往往是存储在磁盘上的⽂文件中的
(可能存储在单独的索引⽂文件中,也可能和数据⼀一起存储在数据⽂文件中)。
我们通常所说的索引,包括聚集索引、覆盖索引、组合索引、前缀索引、唯⼀一索引等,没有特别说
明,默认都是使⽤用
B+树结构组织(多路路搜索树,并不不⼀一定是⼆二叉的)的索引。
索引的优势和劣势
优势:
可以提⾼高数据检索的效率,降低数据库的
IO成本,类似于书的⽬目录。 检索
通过索引列列对数据进⾏行行排序,降低数据排序的成本,降低了了CPU的消耗。 排序
被索引的列列会⾃自动进⾏行行排序,包括【单列列索引】和【组合索引】,只是组合索引的排序要复
杂⼀一些。
如果按照索引列列的顺序进⾏行行排序,对应
order by语句句来说,效率就会提⾼高很多。
where 索引列列 在存储引擎层 处理理
覆盖索引,不不需要回表查询
劣势:
索引会占据磁盘空间
索引虽然会提⾼高查询效率,但是会降低更更新表的效率
。⽐比如每次对表进⾏行行增删改操作, MySQL不不
仅要保存数据,还有保存或者更更新对应的索引⽂文件。
索引的分类
单列列索引
普通索引: MySQL中基本索引类型,没有什什么限制,允许在定义索引的列列中插⼊入重复值和空值,
纯粹为了了查询数据更更快⼀一点。
add index
唯⼀一索引:索引列列中的值必须是唯⼀一的,但是允许为空值. add unique index
主键索引:是⼀一种特殊的唯⼀一索引,不不允许有空值。 pk
组合索引
在表中的多个字段组合上创建的索引 add index(col1,col2..)
组合索引的使⽤用,需要遵循最左前缀原则(最左匹配原则,后⾯面⾼高级篇讲解)
⼀一般情况下,
建议使⽤用组合索引代替单列列索引(主键索引除外,具体原因后⾯面知识点讲解)。
全⽂文索引
只有在MyISAM引擎、 InnoDB5.6以后)上才能使⽤用,⽽而且只能在CHAR,VARCHAR,TEXT类型字段上
使⽤用全⽂文索引。
fulltext
优先级最⾼高 先执⾏行行 不不会执⾏行行其他索引
存储引擎 决定执⾏行行⼀一个索引
空间索引
不不做介绍,⼀一般使⽤用不不到。
索引的使⽤用
创建索引
单列列索引之普通索引
单列列索引之唯⼀一索引
单列列索引之全⽂文索引
组合索引
删除索引
查看索引
索引原理理分析
索引的存储结构
索引存储结构
索引是在存储引擎中实现的,也就是说不不同的存储引擎,会使⽤用不不同的索引
MyISAMInnoDB存储引擎:只⽀支持B+ TREE索引, 也就是说默认使⽤用BTREE,不不能够更更换
MEMORY/HEAP存储引擎:⽀支持HASHBTREE索引
B树和B+
数据结构示例例⽹网站:
https://www.cs.usfca.edu/~galles/visualization/Algorithms.html
B树图示
CREATE INDEX index_name ON table(column(length)) ;
ALTER TABLE table_name ADD INDEX index_name (column(length)) ;
CREATE UNIQUE INDEX index_name ON table(column(length)) ;
alter table table_name add unique index index_name(column);
CREATE FULLTEXT INDEX index_name ON table(column(length)) ;
alter table table_name add fulltext index_name(column)

发表回复

后才能评论

本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。

最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。 若排除这种情况,可在对应资源底部留言,或联络我们。

对于会员专享、整站源码、程序插件、网站模板、网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。