百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>数据库> mysql中什么是非聚簇索引?
分享文章到:

mysql中什么是非聚簇索引?

发布时间:09/01 来源:未知 浏览: 关键词:

mysql中非聚簇索引是索引的储备和数据的储备是别离的,也就是说寻到了索引但没寻到数据,需要按照索引上的值即主键再次回表查询,非聚簇索引也叫做辅助索引。

mysql中非聚簇索引是:

索引的储备和数据的储备是别离的,也就是说寻到了索引但没寻到数据,需要按照索引上的值(主键)再次回表查询,非聚簇索引也叫做辅助索引。

一个例子

下面我们创立了一个学生表,做三种查询,来说明什么状况下是聚簇索引,什么状况下不是。

create table student (
    id bigint,
    no varchar(20) ,
    name varchar(20) ,
    address varchar(20) ,
    PRIMARY KEY (`branch_id`) USING BTREE,
    UNIQUE KEY `idx_no` (`no`) USING BTREE
)ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

相关学习引荐:mysql视频教程

第一种,直接按照主键查询猎取所有字段数据,此时主键是聚簇索引,由于主键对应的索引叶子节点储备了id=1的所有字段的值。

select * from student where id = 1

第二种,按照编号查询编号和名称,编号本身是一个独一索引,但查询的列包括了学生编号和学生名称,当命中编号索引时,该索引的节点的数据储备的是主键ID,需要按照主键ID从新查询一次,所以这种查询下no不是聚簇索引

select no,name from student where no = 'test'

第三种,我们按照编号查询编号(有人会问知道编号了还要查询?要,你大概需要验证该编号在数据库中可否存在),这种查询命中编号索引时,直接返回编号,由于所需要的数据就是该索引,不需要回表查询,这种场景下no是聚簇索引

select no from student where no = 'test'

总结:

主键必然是聚簇索引,MySQL的InnoDB中必然有主键,即使研发人员不手动设定,则会使用unique索引,没有unique索引,则会使用数据库内部的一个行的id来当作主键索引,其它一般索引需要区分SQL场景,当SQL查询的列就是索引本身时,我们称这种场景下该一般索引也可以叫做聚簇索引,MyisAM引擎没有聚簇索引。

以上就是mysql中什么是非聚簇索引?的具体内容,更多请关注百分百源码网其它相关文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有150人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板