索引原理

树数据结构及其算法简介

B+/-树:

- 多路搜索树;
- 时间复杂度O(logdN);h为节点出度,d为深度

红黑树:

- 节点带有颜色的平衡二叉树
- 时间复杂度O(log2N);h节点出度=2

平衡二叉树:

- 绝对平衡二叉树,查找效率和红黑树基本一样
- 但是插入和删除的效率低于红黑书;

查找时间复杂度

上述数据结构,因为时间复杂度是O(logdN),所以d越大,效率上越低,
同时,红黑树在插入和删除的操作上有较高的效率,所以C++中Map就是红黑树实现的;

磁盘I/O操作

参考文章:MySQL索引背后的数据结构及算法原理[http://blog.codinglabs.org/articles/theory-of-mysql-index.html]
- 数据库的索引空间可能很大,所以在索引的数据可能会部分存储到磁盘空间;
- 根据O(logdN), B+/-树的d比平二叉衡树大,所以访问节点的数量就越小,可以减少IO读写;
- 有因为B+树内部节点去掉了data域,所以可以有更大的出度d,所以i/o会更少;
- 所以数据库在的索引使用 B+树实现;

索引类型

- 聚集索引:主键索引(一级索引);这种实现方式使得按主键的搜索十分高效
- 辅助索引(二级索引):需要检索两遍索引,首先检索辅助索引获得主键,然后用主键到主索引中检索获得记录。

MYSQL优化

- 结构优化:
- 查询优化:最左前缀原理
1.范围列可以用到索引(必须是最左前缀),但是范围列后面的列无法用到索引。同时,索引最多用于一个范围列,因此如果查询条件中有两个范围列则无法全用到索引。
2.查询条件中含有函数或表达式则不能使用索引

搜索引擎

类型 优点 缺点 使用场景
InoDB 事务,行级锁,支持失败恢复 不支持全文搜索
MyIsAM 快速读取 表级锁,无事务,不支持失败恢复
MEMORY hash算法,效率高 数据不安全

mysql数据库索引原理及其常用引擎对比的更多相关文章

  1. (转)MySql数据库索引原理(总结性)

    本文引用文章如链接: http://www.codinglabs.org/html/theory-of-mysql-index.html#more-100 参考书籍:Mysql技术内幕 本文主要是阐述 ...

  2. MySql数据库索引原理

    写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点.考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录.如果没有索引,查询将 ...

  3. mysql数据库----索引原理与慢查询优化

    一.介绍 1.什么是索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语 ...

  4. MySQL 数据库--索引原理与慢查询优化

    索引的原理 本质都是:通过不断地缩小想要获取数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件,也就是说,有了这种索引机制,我们可以总是用同一种查找方式来锁定数据. 索引的数据结构 b+ ...

  5. MySQL数据库索引常见问题

    笔者看过很多数据库相关方面的面试题,但大多数答案都不太准确,因此决定在自己blog进行一个总结. Q1:数据库有哪些索引?优缺点是什么? 1.B树索引:大多数数据库采用的索引(innoDB采用的是b+ ...

  6. mysql进阶(二十七)数据库索引原理

    mysql进阶(二十七)数据库索引原理 前言   本文主要是阐述MySQL索引机制,主要是说明存储引擎Innodb.   第一部分主要从数据结构及算法理论层面讨论MySQL数据库索引的数理基础.    ...

  7. 数据库MySQL 之 索引原理与慢查询优化

    数据库MySQL 之 索引原理与慢查询优化 浏览目录 索引介绍方法类型 聚合索引辅助索引 测试索引 正确使用索引 组合索引 注意事项 查询计划 慢查询日志 大数据量分页优化 一.索引介绍方法类型 1. ...

  8. MySQL数据库索引的底层原理(二叉树、平衡二叉树、B-Tree、B+Tree)

    1.MySQL数据库索引的底层原理 https://mp.weixin.qq.com/s/zA9KvCkkte2mTWTcDv7hUg

  9. MySQL存储引擎的实际应用以及对MySQL数据库中各主要存储引擎的独特特点的描述

    MySQL存储引擎的实际应用以及对MySQL数据库中各主要存储引擎的独特特点的描述: 1.MySQL有多种存储引擎: MyISAM.InnoDB.MERGE.MEMORY(HEAP).BDB(Berk ...

随机推荐

  1. eas之单据转换规则

    /**  * BOTP单据转换  * @param botpNum 转换规则编号  * @param BillInfo 原单据  */ public static void BOTP(String b ...

  2. 【剑指Offer】45、扑克牌顺子

      题目描述:   LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到 ...

  3. ls命令:显示文件或目录

    ls:显示目录下的内容及相关属性信息 [命令详解] [功能说明] ls命令可以理解为英文list的缩写,其功能是列出目录的内容及其内容属性信息(list directory contents).该命令 ...

  4. ps图标长投影如何做?

    https://jingyan.baidu.com/article/2f9b480dad9c8e41cb6cc297.html ps图标长投影

  5. redis liunx系统安装

    同事总结非常好,借鉴一下 原文地址:https://www.cnblogs.com/dslx/p/9291535.html redis安装 下载redis的安装包上传到Linux服务器,安装包如下 h ...

  6. node环境变量配置,npm环境变量配置

    引言:很久没有在windows上配过node, 记得以前node环境变量是要加 NODE_PATH 到用户变量,再在系统变量引入NODE_PATH的,而npm install的全局包目录会存放在C:/ ...

  7. HDU 4535

    裸 的错排.... #include <iostream> #include <cstdio> #include <cstring> #include <al ...

  8. RubyMine快捷键

    RubyMine快捷键 ctrl+shift+up/down 向上/向下移动代码段 alt+shift+up/down 向上/向下移动代码行 ctrl+y 删除一行 ctrl+shift+f10 运行 ...

  9. LAS文件转TXT文件

    LAS文件转TXT文件 https://www.liblas.org/start.html

  10. 检測wifi是否须要portal验证 公共场所wifi验证

    何为wifi portal验证? 平时在商场,咖啡厅,银行等公共场所.我们手机提示:有可用WLAN.这些WIFI能够直接连接,不须要password,但须要我们手动在手机网页上进行验证,通常是输入一个 ...