索引模型: hash,有序数组,搜索树

1,hash: key,value存储。存储结构类似于Java7 的hashmap。 同一节点使用链表的形式存储。适合单个等值查询,不适用于范围查询

2,有序数组:按从大到小有序存储,类似于链表。等值,范围查询使用二分 时间复杂度Olog(N),查询效率搞。但插入一条数据都要,移动后面的所有数据。适用于静态存储引擎

3,搜索树:树结构,查询时间复杂度O(log(N)),更新时间复杂度O(log(N)).

数据库大都不适合使用二叉树,层级会非常高,每一层存放在一个数据页中,100万节点的平衡二叉树,树高20,需要访问20个数据块,每个数据快的寻址大概需要10ms.查询耗时比较长.

搜索需要查多次磁盘(从磁盘随机读取一个数据块,需要10ms左右的寻址时间)。

innoDB引擎的索引。B+树

innoDB的索引模式也可以称之为N叉树,这个N大概为1200。N叉树的高度一般不超过4,当高度为4时,其可以存储的数据为1200的三次方,大概为17亿。这样查询一个值最多只需要访问3次磁盘。

而且树的第二层,有很大的概率在内存中,这样大大提升了查询效率。

innoDB的数据存储在B+树的叶子节点,按主键顺序存储。相当于主键索引,也称之为聚簇索引。

非主键索引,也称之为二级索引。二级索引也是一颗B+树,按索引字段排序。

二级索引的查找数据过程,先通过普通索引查出数据对应的主键,在通过主键查询整行信息(查询数据不仅是主键时)(回查聚簇索引,称之为回表)

如果查询的数据只是主键id,不需要回表,因为通过二级索引已经可以查询到主键信息。称之为覆盖索引。

注意:每次数据调整,都需要调整每颗树的结构。在索引过多时,每次新增需要调整的数据结构就更多。

固索引当按需创建,杜绝无效索引。

另外索引支持最左前缀原则,like 'li%' 这种形式可以支持索引。

索引下推 联合查询时,先在索引中过滤完成之后再回表取数据

mysql查询索引数组_mysql-索引相关推荐

  1. MySQL查询性能优化七种武器之索引下推

    前面已经讲了MySQL的其他查询性能优化方式,没看过可以去了解一下: MySQL查询性能优化七种武器之索引潜水 MySQL查询性能优化七种武器之链路追踪 今天要讲的是MySQL的另一种查询性能优化方式 ...

  2. mysql索引总结_mysql 索引类型以及创建

    文章归属:http://feiyan.info/16.html  自己还是小白,从借鉴别人的东西开始学习. 关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基尼的话,那么没 ...

  3. mysql 存储过程 定义数组_MySql存储过程

    Mysql进阶 存储过程 1 什么是存储过程 1.存储过程,带有逻辑的sql语句 2.之前的sql没有条件判断,没有循环 3.存储过程带上流程控制语句(if while) 2 存储过程特点 1)执行效 ...

  4. mysql 索引计划_Mysql索引、查询计划、优化方向

    索引 Innodb索引(聚集索引)(聚簇表分布) Innodb是索引组织表,其结构是B+Tree.其表索引结构是聚簇表分布. 其叶子节点保存了Key+Row Data(聚集索引,按主键排序),其Key ...

  5. mysql查询索引位置_mysql索引在什么位置

    mysql索引的位置在[数据库安装目录\data\databasename].索引是存储引擎用于快速找到记录的一种数据结构.索引对于良好的性能非常关键. MySQL中索引的简介 (视频教程推荐:mys ...

  6. MySQL建立的索引看_MYSQL索引问题:索引在查询中如何使用?看了很多资料都只说索引的建立。是否建立了就不用再理会?...

    # 有这样一个表 P mysql> create table P (id int primary key, name varchar(10) not null, sex varchar(1), ...

  7. mysql查询中怎样使用索引_MySQL如何使用索引

    初始化测试数据 创建一个测试用的表 create tabledept( idint primary keyauto_increment , deptNamevarchar(32) not null u ...

  8. mysql 子查询索引失效_mysql 索引失效的情况

    索引失效的几种情况 1.如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因) 要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引 2.对于多列索引,不是使用 ...

  9. mysql多索引结构_MySQL 索引结构

    谈到 MYSQL 索引服务端的同学应该是熟悉的不能再熟悉,新建表的时候怎么着都知道先来个主键索引,对于经常查询的列也会加个索引加快查询速度.那么 MYSQL 索引都有哪些类型呢?索引结构是什么样的呢? ...

  10. mysql的索引优化_MySQL索引优化与分析(重要)

    建表SQL CREATE TABLE staffs ( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR (24) NULL DEFAULT '' COM ...

最新文章

  1. SAP HUM 嵌套HU初探 II
  2. c语言将数组变为空,求助~~ 如何把数组变成动态输入的?
  3. C#中DateTime.Ticks属性及Unix时间戳转换
  4. STM32 FSMC/FMC原理保姆级讲解(一)
  5. C++智能指针的“GC”
  6. 安装索引源码阅读工具 lxr 安装配置初探
  7. jdk在线帮助文档地址
  8. flashfxp修改服务器密码,flashfxp服务器端设置
  9. sketch 导出html,用 Sketch 设计和输出响应式网页
  10. 【计算机网络】透明网桥:逆向学习算法逐步建立转发表(例题详细解析)
  11. 思科交换机配置试题_cisco交换机配置简单教程.doc
  12. VMware Workstation实例二:单IP的虚拟机提供外网访问
  13. Spark2.10中使用累加器、注意点以及实现自定义累加器
  14. 【第十七届智能车】智能车图像处理(2)-赛道边界的简单提取和无元素循迹
  15. flutter开发插件和包
  16. 面试题:说一说你对HashMap的理解
  17. 2022基于微信小程序的图书馆座位预约管理系统.rar(论文+程序设计源码+数据库)毕业设计
  18. 高效学习方法和工具推荐,让你事半功倍!
  19. Open SSH下载链接
  20. QT 笔记3 | Qt设计师使用 Qt创造器使用

热门文章

  1. 【PAT乙级】1066 图像过滤 (15 分)
  2. sort函数的应用习题(二)
  3. JS自动刷新当前页面
  4. 重构改善既有代码的设计是php,下篇 |《重构 改善既有代码的设计—笔记》| PHP 技术论坛...
  5. python项目部署到docker_使用docker 部署python 项目
  6. Java开发怎么达到年薪 50w ?我有一些想法和建议
  7. Java 多线程启动为什么调用 start() 方法而不是 run() 方法?
  8. idea + Maven + Spring + myBatis的单元测试
  9. ajax requestbody传值,ajax POST方法调用后@RequestBody属性为空
  10. (数据结构与算法)单链表与双链表增删改查的实现。