mysql 索引的原理
1、考虑下面的情况,
mysql> desc student;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| SCHOOL | varchar(64) | YES | | NULL | |
| NAME | varchar(64) | YES | | NULL | |
| birthday | date | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
3 rows in set
mysql> select * from student;
+--------+----------+------------+
| SCHOOL | NAME | birthday |
+--------+----------+------------+
| NUM_1 | Andy | 1985-08-20 |
| NUM_1 | Andy | 1989-08-20 |
| NUM_2 | Bill | 1983-08-20 |
| NUM_2 | Caroline | 1984-06-20 |
| NUM_3 | Bill | 1982-08-10 |
+--------+----------+------------+
5 rows in set
2、我要select * from student where school='NUM_2'; 这个查询必须要全表扫描(也就是遍历所有的记录),效率会很差。
3、对字段school建立索引,也就是把每条记录school字段的值取出来,进行排序,也就是索引。
4、索引的结构是B+Tree,是一种优化的二叉搜索树。节点包含多个元素值,每个元素值前后各有指针指向子节点,相邻两个元素值定义了子节点的上限和下限,叶子节点的指针指向数据库的记录,为了避免在树节点上下往返,会把枝节点的值拉到叶子节点,并且前一个叶子节点指向下一个叶子节点。
5、索引为什么可以提高访问效率?
存储引擎不需要遍历所有记录(全表扫描)来获取需要的记录,而是从索引的根节点出发,与元素值比较,找到合适的指针进入下层节点,两个元素值定义了下层节点的上限和下限,这样很快进入到叶子节点,最后定位到数据库中的记录。因为,索引结构是有序的,查找范围数据的效率也很高。
mysql 索引的原理的更多相关文章
- MYSQL索引结构原理、性能分析与优化
[转]MYSQL索引结构原理.性能分析与优化 第一部分:基础知识 索引 官方介绍索引是帮助MySQL高效获取数据的数据结构.笔者理解索引相当于一本书的目录,通过目录就知道要的资料在哪里, 不用一页一页 ...
- 【转】由浅入深探究mysql索引结构原理、性能分析与优化
摘要: 第一部分:基础知识 第二部分:MYISAM和INNODB索引结构 1.简单介绍B-tree B+ tree树 2.MyisAM索引结构 3.Annode索引结构 4.MyisAM索引与Inno ...
- 重新学习MySQL数据库4:Mysql索引实现原理
重新学习Mysql数据库4:Mysql索引实现原理 MySQL索引类型 (https://www.cnblogs.com/luyucheng/p/6289714.html) 一.简介 MySQL目前主 ...
- MySQL索引的原理,B+树、聚集索引和二级索引
MySQL索引的原理,B+树.聚集索引和二级索引的结构分析 一.索引类型 1.1 B树 1.2 B+树 1.3 哈希索引 1.4 聚集索引(clusterd index) 1.5 二级索引(secon ...
- MySQL——索引实现原理
在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的,本文主要讨论MyISAM和InnoDB两个存储引擎的索引实现方式. MyISAM索引实现 MyISAM引擎使用B+Tr ...
- mysql索引工作原理、分类
一.概述 在mysql中,索引(index)又叫键(key),它是存储引擎用于快速找到所需记录的一种数据结构.在越来越大的表中,索引是对查询性能优化最有效的手段,索引对性能影响非常关键.另外,mysq ...
- 重新学习Mysql数据库4:Mysql索引实现原理和相关数据结构算法
本文转自互联网 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial ...
- MySQL索引结构原理分析
我们在学习MySQL的时候经常会听到索引这个词,大概也知道这是什么,但是深究下去又说不出什么道道来.下面将会比较全面的介绍一下关于索引! 1 索引是什么? 这里用百度百科的一句话来说,在关系数据库中, ...
- Mysql 索引实现原理. 聚集索引, 非聚集索引
Mysql索引实现: B-tree,B是balance,一般用于数据库的索引.使用B-tree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度.而B+tree是B-tree的一个变种,My ...
- mysql 索引及其原理
mysql 索引 KEY与INDEX的区别: KEY is something on the logical level, describes your table and database desi ...
随机推荐
- POJ 3903:Stock Exchange(裸LIS + 二分优化)
http://poj.org/problem?id=3903 Stock Exchange Time Limit: 1000MS Memory Limit: 65536K Total Submis ...
- c# Beginlnvoke 委托
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- 为开发者准备的9个实用PHP代码片段
一.查看邮件是否已被阅读 当你发送邮件时,你肯定很想知道你的邮件是否已被对方查看.下面的代码就能实现记录阅读你邮件的IP地址,还有实际的阅读日期和时间. error_reporting(0);Head ...
- 《利用python进行数据分析》读书笔记--第十章 时间序列(三)
7.时间序列绘图 pandas时间序列的绘图功能在日期格式化方面比matplotlib原生的要好. #-*- coding:utf-8 -*- import numpy as np import pa ...
- 造字工房情书体MFQingShu_Noncommercial-Regular
造字工房情书体由造字工房字体设计师成瑜历时半年书写完成,其字形俊秀.遒劲有力,优雅中透出知性的气息.文从字顺,字形笔画柔美俊秀.刚柔并济,结构自然洒脱,充满活力朝气的青春气息,完美呈现了手写汉字之美, ...
- CentOS搭建Redis集群
集群原理-redis-cluster架构图 架构细节: (1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽. (2)节点的fail是通过集群中超过半数的 ...
- SQL Server中常用的SQL语句
1.概述 名词 笛卡尔积.主键.外键 数据完整性 实体完整性:主属性不能为空值,例如选课表中学号和课程号不能为空 参照完整性:表中的外键取值为空或参照表中的主键 用户定义完整性:取值范围或非空限制,例 ...
- 2016年12月4日 星期日 --出埃及记 Exodus 20:25
2016年12月4日 星期日 --出埃及记 Exodus 20:25 If you make an altar of stones for me, do not build it with dress ...
- shell控制流结构笔记
man test 可以看见这些 比较符号:-lt小于 -le小于等于 -gt大于 -ge大于等于 -ne不等于 -eq等于 < 小于(需要双 ...
- ClassLoader加载
摘自:http://blog.csdn.net/moreevan/article/details/6654781