NullPointer 发表于 2017-2-26 13:28

索引一:什么是索引

本帖最后由 NullPointer 于 2017-2-26 13:57 编辑

1. MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。你可以简单的理解为“排好序的快速查找数据结构”

2. 索引的本质:索引是数据结构。

3. 索引的目的在于提高查询效率,可以类比成字典

4. 例如:如要查询“mysql”这个单词,我们肯定需要定位到m字母,然后从上往下找到y字母,在找到剩下的sql。如果没有索引,那么你可能需要a~z,如果我想找到Java开头的单词呢?或者Oracle开头的单词呢?是不是觉得如果没有索引,这个事情根本无法完成?

5. 一般来说索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储在磁盘上。我们平常所说的索引,若没有特别指明,都是B树(Btree,多路搜索树,并不一定是二叉的,有可能是三叉等多叉)结构组织的索引,其中聚集索引,次要索引,覆盖索引,复合索引,前缀索引,唯一索引默认都是使用B+树索引。当然,除了B+树这种类型的索引之外,还有哈希索引(hashindex)等。
http://upload-images.jianshu.io/upload_images/4582242-49a91d046d41097a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240

Paste_Image.png通俗的解释:可以把0x07等这些十六进制理解为数据记录的物理地址,Col1理解为id,Col2理解为name,七条数据。为了加速name的查找,可以维护一个二叉树(不一定是二叉的),每个节点分别包含索引键值和一个指向具体数据的物理地址,终归说来就是:索引进行了排序,使之查找更快。



akinet 发表于 2017-2-26 13:39

索引(Index)你可以简单的理解为“排好序的快速查找数据结构”


谢谢!~

枫MapleLCG 发表于 2017-2-26 13:49

禁止留群号。

NullPointer 发表于 2017-2-26 13:57

枫叶飘零 发表于 2017-2-26 13:49
禁止留群号。

好的,我修改一下

瓜子吧3 发表于 2017-2-26 14:02

不错, 已支持

cydib 发表于 2017-2-26 14:09

不错,学习了

czllt 发表于 2017-2-26 18:14

长知识了,谢谢
页: [1]
查看完整版本: 索引一:什么是索引