MySQL索引类型(type)分析
type索引类型:
system > const > eq_ref > ref > range > index > all优化级别从左往右递减,没有索引的⼀般为’all’,需要对type进⾏优化前提是有索引。其中’system’和’const’只是理想型,实际只能达到’ref’和’range’。
注意:这⾥主要针对MySQL5.6进⾏讲解,与其他版本有区别,但是原理过程⼀致。
创建两张表teacher和teacherCard
# 教师表
create table teacher(tid int(5),tname varchar(20),tcid int(5)
);# 教师卡
create table teacherCard(tcid int(5),tcdesc varchar(20)
);# 插⼊教师信息
insert into teacher values(1,'tz',1);
insert into teacher values(2,'tw',2);
insert into teacher values(3,'tl',3);# 插⼊教师卡信息
insert into teacherCard values(1,'tzdesc');
insert into teacherCard values(2,'twdesc');
insert into teacherCard values(3,'tldesc');# 教师表添加主键索引
alter table teacher add constraint pk_tid primary key(tid);
1.system
衍⽣表只有⼀条数据的主查询;衍⽣表通过主键查询只有⼀条数据,再通过这条数据进⾏主查询。
# 子查询为主键查询
explain select * from (select * from test01 where tid =1)
⼦查询通过主键查询得出⼀条数据(该条数据构成衍⽣表),通过衍⽣表的数据进⾏主查询,其衍⽣表的索引类型为system。
2.const
仅仅能查到⼀条数据的SQL,⽤于primary key 或 unique的索引(其他索引类型不属于)
# 主键查询只有⼀条数据的情况,类型为 const
explain select * from test01 where tid =1
3.eq_ref
唯⼀性索引,表索引与另外表的主键进⾏关联,两张表之间每条数据要⼀⼀对应(每个都要⼀⼀对应,不能⼀个对应多个,不能没有对应),查询的数据在表中是唯⼀性,不能有重复。
# 给 teacherCard 添加主键
alter table teacherCard add constraint pk_tcid primary key(tcid);# 对 teacher 表进⾏索引唯⼀查询
explain select t.tcid from teacher t, teacherCard tc where t.tcid = tc.tcid;
主表(没有外键的表)为eq_ref:
4.ref
⾮唯⼀线性索引,对于每个索引键的查询返回的数据为0或多条。
# 给 teacher 表的 tname 的字段添加索引
alter table teacher add index tname_index (tname);
# 根据 tname = tz 查询出两条数据
explain select * from teacher where tname ='tz';
根据tname索引直接查询出来的值为ref类型。
5.range
检查指定范围⾏,where后⾯是⼀个范围查询(between、in、>、<、=等)。
# 查看range类型的索引
explain select * from teacher t where t.tid in (1,2);
explain select * from teacher where tid between 1 and 2;
explain select * from teacher where tid <3;
根据tname索引直接查询出来的值为ref类型。
6.index
查询索引中的所有数据。
#查询索引的所有数据,其中tname就是索引
explain select tname from teacher
7.all
查询表中的所有数据,或者根据不是索引的字段查询。
#直接查询
explain select * from teacher;
type类型总结:
system/const:结果只有⼀条数据。
eq_ref:结果多条,但是每条数据都是唯⼀的。
ref:结果多条,但是查询到的数据可以是多条,且数据可以重复。
range:根究索引字段进⾏范围查询。
MySQL索引类型(type)分析相关推荐
- mysql 索引都有哪些,mysql索引类型有哪些
摘要 腾兴网为您分享:mysql索引类型有哪些,易信,微商助手,刷机精灵,数字涂色等软件知识,以及家校即时通,内部通讯录,叫叫识字大冒险,天天酷跑,手机电视高清直播,短信验证软件,诛仙表情包,一手女装 ...
- mysql 索引类型案例_Mysql索引类型与基本用法实例分析
本文实例讲述了Mysql索引类型与基本用法.分享给大家供大家参考,具体如下: 索引 MySQL目前主要有以下几种索引类型: 普通索引 唯一索引 主键索引 组合索引 全文索引 - 普通索引 是最基本的索 ...
- mysql 普通索引使用方法,Mysql索引类型与基本用法实例分析
本文实例讲述了Mysql索引类型与基本用法.分享给大家供大家参考,具体如下: 索引 MySQL目前主要有以下几种索引类型: 普通索引 唯一索引 主键索引 组合索引 全文索引 - 普通索引 是最基本的索 ...
- MySQL索引类型详解,让MySQL高效运行起来
为什么80%的码农都做不了架构师?>>> 索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常见的MySQL索引类型. 在数据库表中,对 ...
- MySQL索引类型一览 让MySQL高效运行起来
索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常见的MySQL索引类型. 在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytabl ...
- 【转】 MySQL索引类型一览 让MySQL高效运行起来 mysql索引注意事项
索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常见的MySQL索引类型. 在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytabl ...
- mysql索引类型 normal, unique, full text
问题1:mysql索引类型normal,unique,full text的区别是什么? normal:表示普通索引 unique:表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用 ...
- mysql索引类型normal,unique,full text
问题1: MySQL索引类型normal,unique,full text的区别是什么? normal:表示普通索引 unique:表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号 ...
- MySQL索引类型总结和使用技巧以及注意事项
在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytable表: 复制代码代码如下: CREATE TABLE mytable( ID INT NOT NULL, u ...
- mysql的索引类型_带您了解mysql索引类型
MySQL索引的种类繁多,基本分为四类,下面就为您分别介绍MySQL索引,供您参考,希望可以让您对MySQL索引有更深的认识. MySQL索引类型包括: (1)普通索引 这是最基本的索引,它没有任何限 ...
最新文章
- PDF:解决从PDF中复制文字时出现的空方框问题
- 矩形波的傅里叶变换_冲激信号、门信号、方波、矩形波的傅里叶变换总结
- oracle日记账单据编号未生成_商管财务数据平台Oracle与共享未付池差异如何核对、解决?...
- mysql 主从复制介绍_MySQL 主从复制介绍
- Java面试——RabbitMQ系列总结
- 信息学奥赛一本通 提高篇 第一部分 基础算法 第2章 二分与三分
- vCenter Server Appliance 所需的端口
- Java ---- baidu评价抽取关键词-商品评论
- 【渝粤教育】国家开放大学2018年春季 0314-21T兽医基础 参考试题
- NTFS For Mac的兼容性问题
- 遥感动态监测实验(以福州为例)
- 如何进行系统分析与设计
- kotlin-stdlib 与 kotlin-stdlib-jdk7
- 禁用word公式编辑器
- matlab绘制频谱图代码,用MATLAB实现函数的频谱图
- 如何把可爱的Live2d看板娘放到自己的网页上
- 互联网晚报 | 05月17日 星期二 | 郑州首套房贷利率最低降至4.4%;可口可乐被曝员工不得购买竞品...
- 知网下载论文(通过深圳图书馆)
- 改变虚拟导航栏(navigation bar)背景色及图标颜色
- 联发科6758_联发科p70相当于骁龙什么处理器型号 对比骁龙675哪个好
热门文章
- 深度linux怎么备份系统下载,深度操作系统20 1003更新发布 支持系统备份、全盘备份、手动还原等...
- java之Reader类与Writer类
- 锁与并发工具包与线程池与LockSupport与Fork/Join框架与并行流串行流与阻塞队列与JPS,jstack命令查看死锁查看线程状态与AQS个人笔记九
- 如何如何理解区分功能测试和非功能测试
- 2021年保安员(初级)考试题及保安员(初级)免费试题
- 百亿互金平台技术栈大起底
- Python:orator-orm操作实践
- 基于ASP.NET的租房系统房产房屋销售系统
- 从入门到精通:Java编程基础入门教程
- BigNumber 的静态属性含义-(ROUND_DOWN,ROUND_UP,ROUND_CEIL,ROUND_FLOOR,ROUND_HALF_UP,ROUND_HALF_CEIL)