Mysql聚集索引和非聚集索引

首先要明确一个概念,在聚集索引的世界里索引就是数据,在最后的叶子索引键保存着对应的数据行。

举个例子:

表TestNonclusteredIndex

ID   col1
1    4
2    5
3    6
4    7

其中ID列上有聚集索引,col1上是非聚集索引

执行下面语句:

select *
from TestNonclusteredIndex
where ID = 3;

SQL知道ID是聚集索引,因此就去聚集索引里去查找(查找和扫描是有区别的),当找到对应的键值的时候里面保存的是 "3 6"这条记录。

如果执行这条查询语句:

select *
from TestNonclusteredIndex
where col1 = 6

SQL知道col1上有非聚集索引,去索引里查找,找到的是6的非聚集索引键值和这条记录的聚集索引键值,因为没有数据(3 6),SQL就用这个聚集索引查找,就上面的例子一样就找到(3 6)这条数据;

其次,你要知道聚集索引是顺序的,到最后的数据页的时候,你知道第一条记录聚集索引是1难道聚集索引为2的记录不是它下一条,那么聚集索引为N的记录不是1之后的N-1条?我相信师弟不会一条一条的读进去分析的,哈哈...

原文发布于微信公众号 - MYSQL轻松学(learnmysql)

原文发表时间:2015-09-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Petrichor的专栏

python: IO操作

823
来自专栏Hongten

python开发_configparser_解析.ini配置文件工具_完整版_博主推荐

====================================================

781
来自专栏武培轩的专栏

剑指Offer-跳台阶

package Recursion; /** * 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 */ pub...

2524
来自专栏散尽浮华

mysql表名忽略大小写问题记录

问题描述: 一开发同事在linux下调一个程序老是报错说找不到表,但是登陆mysql,show tables查看明明是已经创建了这张表的!!如下: mysql>...

2307
来自专栏Linux驱动

第1阶段——uboot分析之通过nand命令读内核(8)

本节主要学习: 详细分析UBOOT中"bootcmd=nand read.jffs2 0x30007FC0 kernel;bootm 0x30007FC0...

2639
来自专栏前端小栈

mongoDB 基础教程笔记

从mongoDB官网 下载 MongoDB 的最新版本,直接一路next,如果想自定义安装Choose Setup Type处选择Custon

714
来自专栏「3306 Pai」社区

MHA选择主库源码解析

MHA在选择新的主库之前,会先把活着的slave分为几个数组,分别为latest(最靠前的slave数组),pref(优先被选择为master的数组),bad(...

781
来自专栏13blog.site

shell脚本中字符串的常见操作及"command not found"报错处理(附源码)

简介 昨天在通过shell脚本实现一个功能的时候,由于对shell处理字符串的方法有些不熟悉导致花了不少时间也犯了很多错误,因此将昨日的一些错误记录下来,避免以...

3348
来自专栏Java成神之路

Mybatis-Generator_学习_01_mybatis-generator笔记

521
来自专栏liuchengxu

在 Shell 脚本中调用另一个 Shell 脚本的三种方式

fork 是最普通的, 就是直接在脚本里面用 path/to/foo.sh 来调用 foo.sh 这个脚本,比如如果是 foo.sh 在当前目录下,就是 ./...

682

扫码关注云+社区