索引介绍
索引是什么
官⽅介绍索引是帮助MySQL⾼效获取数据的数据结构。更通俗的说,数据库索引好⽐是⼀本书前⾯的⽬录,能加快数据库的查询速度。
⽅便查找---检索
索引查询内容---覆盖索引
排序
⼀般来说索引本身也很⼤,不可能全部存储在内存中,因此索引往往是存储在磁盘上的⽂件中的(可能存储在单独的索引⽂件中,也可能和数据⼀起存储在数据⽂件中)。
我们通常所说的索引,包括聚集索引、覆盖索引、组合索引、前缀索引、唯⼀索引等,没有特别说明,默认都是使⽤B+树结构组织(多路搜索树,并不⼀定是⼆叉的)的索引。
索引的优势和劣势
优势:
可以提⾼数据检索的效率,降低数据库的IO成本,类似于书的⽬录。 -- 检索通过索引列对数据进⾏排序,降低数据排序的成本,降低了CPU的消耗。 --排序
被索引的列会⾃动进⾏排序,包括【单列索引】和【组合索引】,只是组合索引的排序要复杂⼀些。
如果按照索引列的顺序进⾏排序,对应order by语句来说,效率就会提⾼很多。
where 索引列 在存储引擎层 处理
覆盖索引,不需要回表查询
劣势:
索引会占据磁盘空间
索引虽然会提⾼查询效率,但是会降低更新表的效率。⽐如每次对表进⾏增删改操作,MySQL不仅要保存数据,还有保存或者更新对应的索引⽂件。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。