ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

各种索引的比较和MySQL数据库索引的选择

2022-07-20 10:36:13  阅读:122  来源: 互联网

标签:哈希 数据库 查询 索引 查找 数组 MySQL 区间


哈希索引
通过一个哈希函数,把值映射到某个区间的某个位置,读取的时候,也是通过找到映射位置并进行读取,平均的查找复杂度为O(1)。即对索引的key进行一次hash计算就可以定位出数据存储的位置。
典型的应用就是HashMap的底层实现,就是把key通过做一个哈希操作得到一个哈希值,然后再用这个哈希值对HashMap底层的数组长度取余,余数便是数组下标,数组所存的元素一般是一个链表,链表存储着哈希到这个位置的元素。如下图

哈希索引的优点:做等值查询(=,in)的时候很快,添加或者删除单个确定的元素很快;缺点在于哈希表中的元素不一定按顺序排列,无法做区间查询,哈希索引这种结构其实只适合等值查询的场景。

有序数组索引
如下图,相当于数组元素按照身份证号有序排列,要查询数据可以用二分查找,时间复杂度也是O(logN),区间查询的速度也非常快。

缺点:由于有序数组对查询友好,对插入删除操作不友好,如果插入删除数据的话,很可能要移动大量数据,开销非常大,所以其实有序数组索引只适合存储静态数据,就是存不怎么变的数据。

搜索树索引
树形的索引,比如二叉搜索树,多路平衡树等。优点是可以支持快速查找,也支持节点的插入和删除操作。然后如果是B+树的话,底层叶子节点之间有指针连接,这样的数据结构便于我们实现一个区间查找的功能,只要找到区间的两个端点在叶子节点中的位置,然后遍历两个端点之间的数据,就能实现区间查询。

标签:哈希,数据库,查询,索引,查找,数组,MySQL,区间
来源: https://www.cnblogs.com/wbstudy/p/16496388.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有