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 条评论
登录 后参与评论

相关文章

来自专栏程序员宝库

再见乱码:5 分钟读懂 MySQL 字符集设置

作者: 程序猿小卡_casper 原文:https://segmentfault.com/a/1190000012775484 一、内容概述 在MySQL的使...

46611
来自专栏性能与架构

Mysql 8 重要新特性 - CTE 通用表表达式

3216
来自专栏IT开发技术与工作效率

MySQL 8 列出相关依赖 使用CTE(公共数据表达式)

2245
来自专栏青玉伏案

Oracle之PL/SQL学习笔记

  自己在学习Oracle是做的笔记及实验代码记录,内容挺全的,也挺详细,发篇博文分享给需要的朋友,共有1w多字的学习笔记吧。是以前做的,一直在压箱底,今天拿出...

2018
来自专栏成长道路

SQL连接查询和合并查询

连接查询分为内连接,交叉连接,外连接,外连接又可以分为左外连接,右外连接和全外连接,现在我们就来区分一下他们: 内连接:采用inner join关键字 ? 举个...

2430
来自专栏运维技术迷

MySQL数据库(四):约束条件

安装环境: 操作系统版本:RHEL 6.5 版本:MYSQL 5.5 约束条件的作用: 限制如何给字段赋值,创建表的时候如果没有设置的话,就是my...

3285
来自专栏文渊之博

探索SQL Server元数据(三):索引元数据

在第一篇中我介绍了如何访问元数据,元数据为什么在数据库里面,以及如何使用元数据。介绍了如何查出各种数据库对象的在数据库里面的名字。第二篇,我选择了触发器的主题,...

2021
来自专栏大数据

mysql联合索引详解

上一篇文章:mysql数据库索引优化 比较简单的是单列索引(b+tree)。遇到多条件查询时,不可避免会使用到多列索引。联合索引又叫复合索引。 b+tree结构...

1.2K9
来自专栏mukekeheart的iOS之旅

MySQL学习笔记(二)

二、SQL基本知识 SQL 是一种典型的非过程化程序设计语言,这种语言的特点是:只指定哪些数据被操纵,至于对这些数据要执行哪些操作,以及这些操作是如何执行的,则...

27410
来自专栏存储技术

MySQL查询索引分析

前一段时间修改数据表时,给一个表添加一个datetime字段,当时遇到了一个问题:我是否需要给该datetime字段上加索引呢?如果不给该字段加索引,当wher...

2816

扫码关注云+社区

领取腾讯云代金券