这个问题很刁钻!

答案是错的。

的确在mysql数据库innodb引擎里面,主键的确就是聚集索引。

但是myisam引擎里面主键也不是聚集索引。

另外在sql server中还可以显示的指定聚集索引。

CREATE TABLE student

(

stud_id INT IDENTITY(1,1) NOT NULL,

stud_name NVARCHAR(20) NOT NULL,

CONSTRAINT pk_student PRIMARY KEY NONCLUSTERED (stud_id)

);

聚集索引决定了数据库的物理存储结构,而主键只是确定表格逻辑组织方式。这两者不可混淆!

对于Innodb,主键毫无疑问是一个聚集索引。但是当一个表没有主键,或者没有一个索引,Innodb会如何处理呢。请看如下规则:

1.如果一个主键被定义了,那么这个主键就是作为聚集索引

2. 如果没有主键被定义,那么该表的第一个唯一非空索引被作为聚集索引

3. 如果没有主键也没有合适的唯一索引,那么innodb内部会生成一个隐藏的主键作为聚集索引,这个隐藏的主键是一个6个字节的列,改列的值会随着数据的插入自增。

4.自增主键会把数据自动向后插入,避免了插入过程中的聚集索引排序问题。聚集索引的排序,必然会带来大范围的数据的物理移动,这里面带来的磁盘IO性能损耗是非常大的。 而如果聚集索引上的值可以改动的话,那么也会触发物理磁盘上的移动,于是就可能出现page分裂,表碎片横生。所以不应该修改聚集索引。

mysql 主键 聚集索引_主键索引就是聚集索引吗?相关推荐

  1. mysql非主键索引_主键索引和非主键索引的区别

    1. 什么是最左前缀原则? 以下回答全部是基于MySQL的InnoDB引擎 例如对于下面这一张表 如果我们按照 name 字段来建立索引的话,采用B+树的结构,大概的索引结构如下 如果我们要进行模糊查 ...

  2. mysql非主键索引_主键索引和非主键索引解析

    1. 什么是最左前缀原则? 以下回答全部是基于MySQL的InnoDB引擎 例如对于下面这一张表 如果我们按照 name 字段来建立索引的话,采用B+树的结构,大概的索引结构如下 如果我们要进行模糊查 ...

  3. mysql主键和唯一索引_主键和唯一索引的有什么区别

    主键和唯一索引的区别 -- 区别 主键是一种约束,唯一索引是一种索引,两者在本质上是不同的. 主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键. 唯一性索引列允许空值,而主键列不允许为空值 ...

  4. mysql主键约束代码_主键约束(示例代码)

    第一范式要求每张表都要有主键,因此主键约束是非常重要的,而且主键约束是外键关联的基础条件.主键约束为表之间的关联提供了链接点. 主键必须能够唯一标识一条记录,也就是主键字段中的值必须是唯一的,而且不能 ...

  5. templet 显示字段外键对应名_主外键和外键约束

    主外键和外键约束 主键 主键(primary key):一列(或一组列),其值能够唯一区分表中每个行 . 外键 外键(foreign key) 外键为某个表中的一列,它包含另一个表的主键值,定义了两个 ...

  6. mysql创建非聚集索引_一文看懂聚集索引和非聚集索引的区别

    一.深入浅出理解索引结构 实际上,可以把索引理解为一种特殊的目录.微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引.簇集索引)和非聚集索引(nonclu ...

  7. mysql为什么采用b树_为什么MongoDB采用B树索引,而Mysql用B+树做索引

    展开全部 事实上,在MySQL数据库中,诸多存储引擎使用的是B+树,即便其名字看上去是BTREE. 4.1 innodb的索引机制 先以innodb存储引擎为例,说明62616964757a68696 ...

  8. mysql分表后怎么索引_分库分表后的索引问题

    摘要 最近遇到一个慢sql,在排查过程中发现和分库分表后的索引设置有关系,总结了下问题. 问题 在进行应用健康度盘点时,发现有个慢sql 如下 select brandgoodid from bran ...

  9. python花式索引_初探Numpy中的花式索引

    Numpy中对数组索引的方式有很多(为了方便介绍文中的数组如不加特殊说明指的都是Numpy中的ndarry数组),比如:基本索引:通过单个整数值来索引数组 import numpy as np arr ...

最新文章

  1. 重磅回击!ZeniMax回击Oculus新试验
  2. Markdown用法
  3. mchain r语言_【揭秘】Mchain是长久稳定的项目吗?是不是骗钱的平台?做的人有多少?...
  4. python写一个路径选择app_django下创建多个app并设置urls方法
  5. Dubbo(五)Dubbo 简单监控平台(monitor)搭建
  6. 在英雄联盟地图中寻找“数据结构的大门”
  7. matlab能流图,有会用MATLAB写海流图的程序吗
  8. 国产在线三维云CAD:CrownCAD (在线建模CAD软件)
  9. 各种分类算法的优缺点
  10. Linux电驴客户端,linux下电驴amule的安装配置
  11. android 二选一的按钮,选择框 RadioButton/Check - Android 入门教程
  12. java使用freemarker模版下载成Excel文件
  13. 【Android】自制静音App,解决他人手机外放问题
  14. python初学者游戏开发团队
  15. GPU CPU NPU
  16. 通过internet连接到股票信息服务器,一种股票机的制作方法
  17. 【网络安全】渗透工程师面试题总结大全
  18. Xcode8 支持 iOS7及以下版本
  19. 淘宝/天猫、拼多多、1688产品详情页API、SKU信息获取展示
  20. Linux 7.9下安装grafana

热门文章

  1. 夏季口腔问题多发是天灾还是人祸?
  2. 大数据时代慎言“天灾”
  3. 数据库Mysql5:where语句
  4. 著名标志性的奇装异服万圣节服装
  5. php签到表怎么建,PHP如何实现签到功能
  6. Android获取操作系统名称
  7. 神秘海域:失落的遗产 - 概念艺术
  8. 【Delphi】阿里车主服务 ECO API SDK D7 D2007 D2010 XE2 XE7 XE8 XE10跨平台
  9. 看图了解linux命令
  10. Hadoop 之文件读取