mysql查询索引数组_mysql-索引
索引模型: 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-索引相关推荐
- MySQL查询性能优化七种武器之索引下推
前面已经讲了MySQL的其他查询性能优化方式,没看过可以去了解一下: MySQL查询性能优化七种武器之索引潜水 MySQL查询性能优化七种武器之链路追踪 今天要讲的是MySQL的另一种查询性能优化方式 ...
- mysql索引总结_mysql 索引类型以及创建
文章归属:http://feiyan.info/16.html 自己还是小白,从借鉴别人的东西开始学习. 关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基尼的话,那么没 ...
- mysql 存储过程 定义数组_MySql存储过程
Mysql进阶 存储过程 1 什么是存储过程 1.存储过程,带有逻辑的sql语句 2.之前的sql没有条件判断,没有循环 3.存储过程带上流程控制语句(if while) 2 存储过程特点 1)执行效 ...
- mysql 索引计划_Mysql索引、查询计划、优化方向
索引 Innodb索引(聚集索引)(聚簇表分布) Innodb是索引组织表,其结构是B+Tree.其表索引结构是聚簇表分布. 其叶子节点保存了Key+Row Data(聚集索引,按主键排序),其Key ...
- mysql查询索引位置_mysql索引在什么位置
mysql索引的位置在[数据库安装目录\data\databasename].索引是存储引擎用于快速找到记录的一种数据结构.索引对于良好的性能非常关键. MySQL中索引的简介 (视频教程推荐:mys ...
- MySQL建立的索引看_MYSQL索引问题:索引在查询中如何使用?看了很多资料都只说索引的建立。是否建立了就不用再理会?...
# 有这样一个表 P mysql> create table P (id int primary key, name varchar(10) not null, sex varchar(1), ...
- mysql查询中怎样使用索引_MySQL如何使用索引
初始化测试数据 创建一个测试用的表 create tabledept( idint primary keyauto_increment , deptNamevarchar(32) not null u ...
- mysql 子查询索引失效_mysql 索引失效的情况
索引失效的几种情况 1.如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因) 要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引 2.对于多列索引,不是使用 ...
- mysql多索引结构_MySQL 索引结构
谈到 MYSQL 索引服务端的同学应该是熟悉的不能再熟悉,新建表的时候怎么着都知道先来个主键索引,对于经常查询的列也会加个索引加快查询速度.那么 MYSQL 索引都有哪些类型呢?索引结构是什么样的呢? ...
- mysql的索引优化_MySQL索引优化与分析(重要)
建表SQL CREATE TABLE staffs ( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR (24) NULL DEFAULT '' COM ...
最新文章
- SAP HUM 嵌套HU初探 II
- c语言将数组变为空,求助~~ 如何把数组变成动态输入的?
- C#中DateTime.Ticks属性及Unix时间戳转换
- STM32 FSMC/FMC原理保姆级讲解(一)
- C++智能指针的“GC”
- 安装索引源码阅读工具 lxr 安装配置初探
- jdk在线帮助文档地址
- flashfxp修改服务器密码,flashfxp服务器端设置
- sketch 导出html,用 Sketch 设计和输出响应式网页
- 【计算机网络】透明网桥:逆向学习算法逐步建立转发表(例题详细解析)
- 思科交换机配置试题_cisco交换机配置简单教程.doc
- VMware Workstation实例二:单IP的虚拟机提供外网访问
- Spark2.10中使用累加器、注意点以及实现自定义累加器
- 【第十七届智能车】智能车图像处理(2)-赛道边界的简单提取和无元素循迹
- flutter开发插件和包
- 面试题:说一说你对HashMap的理解
- 2022基于微信小程序的图书馆座位预约管理系统.rar(论文+程序设计源码+数据库)毕业设计
- 高效学习方法和工具推荐,让你事半功倍!
- Open SSH下载链接
- QT 笔记3 | Qt设计师使用 Qt创造器使用
热门文章
- 【PAT乙级】1066 图像过滤 (15 分)
- sort函数的应用习题(二)
- JS自动刷新当前页面
- 重构改善既有代码的设计是php,下篇 |《重构 改善既有代码的设计—笔记》| PHP 技术论坛...
- python项目部署到docker_使用docker 部署python 项目
- Java开发怎么达到年薪 50w ?我有一些想法和建议
- Java 多线程启动为什么调用 start() 方法而不是 run() 方法?
- idea + Maven + Spring + myBatis的单元测试
- ajax requestbody传值,ajax POST方法调用后@RequestBody属性为空
- (数据结构与算法)单链表与双链表增删改查的实现。