吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3473|回复: 6
收起左侧

[Java 转载] 索引一:什么是索引

[复制链接]
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)等。


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



免费评分

参与人数 3吾爱币 +6 热心值 +3 收起 理由
czllt + 1 + 1 谢谢@Thanks!
瓜子吧3 + 3 + 1 已答复!
hejialong + 2 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

akinet 发表于 2017-2-26 13:39
索引(Index)你可以简单的理解为“排好序的快速查找数据结构”


谢谢!~
枫MapleLCG 发表于 2017-2-26 13:49
 楼主| NullPointer 发表于 2017-2-26 13:57
瓜子吧3 发表于 2017-2-26 14:02
不错, 已支持
cydib 发表于 2017-2-26 14:09
不错,学习了
czllt 发表于 2017-2-26 18:14
长知识了,谢谢
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-27 04:01

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表