博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql索引回表
阅读量:2494 次
发布时间:2019-05-11

本文共 641 字,大约阅读时间需要 2 分钟。

先索引扫描,再通过ID去取索引中未能提供的数据,即为回表。

建表

mysql> create table T(id int primary key, k int not null, name varchar(16),index (k))engine=InnoDB;

如果语句是 select * from T where ID=500,即主键查询方式,则只需要搜索 ID 这棵 B+ 树;

mysql>  select * from T where ID=500;+-----+---+-------+| id  | k | name  |+-----+---+-------+| 500 | 5 | name5 |+-----+---+-------+1 row in set (0.00 sec)

如果语句是 select * from T where k=5,即普通索引查询方式,则需要先搜索 k 索引树,得到 ID 的值为 500,再到 ID 索引树搜索一次。这个过程称为回表。

mysql> select * from T where k=5;+-----+---+-------+| id  | k | name  |+-----+---+-------+| 500 | 5 | name5 |+-----+---+-------+1 row in set (0.00 sec)

也就是说,基于非主键索引的查询需要多扫描一棵索引树。因此,我们在应用中应该尽量使用主键查询

转载地址:http://paorb.baihongyu.com/

你可能感兴趣的文章
内容提供者的概念
查看>>
单例模式
查看>>
作业六
查看>>
linux phpize
查看>>
蓝牙模块音频BLE数据数传串口AT指令的使用方法
查看>>
75: libreoj #10028 双向宽搜
查看>>
[LeetCode] Remove Duplicate Letters 移除重复字母
查看>>
[LeetCode] 4Sum II 四数之和之二
查看>>
[LeetCode] Task Scheduler 任务行程表
查看>>
[LeetCode] Friends Of Appropriate Ages 适合年龄段的朋友
查看>>
WCF 服务端+客户端动态调用
查看>>
Swift开发图解入门
查看>>
[Js-开发常识]为什么定义实体类属性建议用 Ineger 而不是 int
查看>>
P1137 旅行计划
查看>>
160523、Oracle建立表空间和用户
查看>>
处理机调度
查看>>
CQRS架构
查看>>
atmega8 例程:T1定时器 CTC模式 方波输出
查看>>
CAN控制器的选择
查看>>
sublime代码片段
查看>>