微软推荐为每一个表建立一个聚集索引,但是由于sqlserver简单易用,而且很多人并不了解聚集索引,非聚集索引这些东西,所以如果sqlserver不在主键上建立聚集索引的话,可能会导致大部分的表都是堆结构,而堆结构是乱序存放的,检索很不方便,空间也不好管理,所以微软就来了个强硬的,如果不在建表的同事创建聚集索引,sqlserver会自动在主键上面建聚集索引。

其实在网上的大部分资料都不推荐聚集索引建立在主键上,觉得这是浪费,理由是聚集索引查询比较快,应该建立在经常查询和具有同一属性值的列上(比如分类),这个好像说的过去。

不过就本人目前处理过的数据(亿级),还没有充分的证据表明聚集建立在非主键上有明显的优势,因为一个表的查询不单是这个聚集索引查询,他还涉及其他查询,其他查询的索引还要依赖于聚集索引才能找到数据,况且表除了查询还有insert,update,delete 每一个操作都可能涉及聚集索引,如果主键不是聚集索引的话,insert 一条记录,update,delete通过主键修改某条记录可能都需要走两步,第一步,先找到主键,在通过主键去找聚集索引,最终才找到数据,如果主键是聚集索引的话,这些操作只需要一步。

当然这也只是本人的分析,不一定正确。

SqlServer为什么自动在主键上建立聚集索引相关推荐

  1. mysql主键创建非聚集索引_什么是聚集索引,非聚集索引,索引覆盖,回表,索引下推...

    聚集索引 我们先建如下的一张表 CREATE TABLE `student` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '学号',`name` var ...

  2. 为什麽我们一般会在自增列或交易时间列上建立聚集索引

     为什麽我们一般会在自增列或交易时间列上建立聚集索引? 到新公司上班也有一段时间了,感觉现在的自己才开始慢慢学习SQL~ 看这篇文章之前,大家可以先看一下我之前写的一篇文章 聚集索引表插入数据和删 ...

  3. MyBatis 3 自动生成 主键 针对不同的数据库(oracle/sqlserver/mysql)

    MyBatis自动生成的主键很多数据库支持自动生成主键的数据类型.不过这通常(并不总是)是个私有的特性.SQL Map 通过<insert>的子元素<selectKey>来支持 ...

  4. [数据库]SQLServer:什么是主键(PK)和外键(FK)?(图解)

    一.主键与外键 1.主键是用来唯一地标识一行数据.主键列必须包含唯一的值,且不能包含空值(null). 2.主键可以建立在每张二维表中单列或者多列上. 3.一张二维表上的外键可以引用另一张二维表上对应 ...

  5. Bootstrap4+MySQL前后端综合实训-Day08-AM【多表查询sql语句、关联数据的假删除、自动增长主键的获取、栏目管理“数据编辑”按钮的实现】

    [Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记][附:实训所有代码] 目   录 多表查询sql语句 关联数据的假删除(status状态码/数据可恢 ...

  6. Bootstrap4+MySQL前后端综合实训-Day04-PM【PowerDesigner 图形化数据库设计软件(设置依赖关系、自动增长主键、生成sql语句)、SQLyog软件(备份数据库)】

    [Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记] 目   录 PowerDesigner软件 5张数据表之间的依赖关系图 设置数据表的自动增长主键 ...

  7. plsql导入数据主键_使用plsql添加数据并自动生成主键

    使用plsql添加数据并自动生成主键 步骤如下: 步骤一:新建需要创建的表如: -- Create table create table IRC_SYS_DATADIC ( datadic_id VA ...

  8. dm数据库无法用序列自动生成主键,无法解析的成员访问表达式【SEQ_STU_CON_NEXTVAL】

    报错信息: 无法解析的成员访问表达式[SEQ_STU_CON_NEXTVAL] select SEQ_STU_CON_NEXTVAL 这种错的解决方案,在dm数据库中创建一个序列叫SEQ_STU_CO ...

  9. SQL DDL 生成建表语句(可自动生成主键约束,字段默认值等)

    --获取建表DDL(+主键) declare @tabname varchar(50) set @tabname='sys_log'--表名if ( object_id('tempdb.dbo.#t' ...

最新文章

  1. Python3学习笔记01-环境安装和运行环境
  2. EOS 智能合约源代码解读 (5)class contract
  3. wkwebview 下移20像素_UITableView嵌套WKWebView的那些坑
  4. 初学者对python的认识_Python初学者列表,python,初识
  5. php 获取文件给用户下载,php 下载文件/直接下载数据内容
  6. 80后的你现在有多少资产?
  7. SMO算法是干什么的?有什么作用?
  8. 关于KX混响插件:REVERB R详解
  9. NetSetMan v3.4.1
  10. 程序员 -- 黎明前凋零的奇葩
  11. 社交巨人屏蔽Google搜索 Facebook发展强劲拟上市
  12. 关于物联网时代的工控安全
  13. 常微分方程在狄利克雷边界条件下的高精度解法——Richardson 外推法与紧差分法
  14. 3个小球放入4个盒子
  15. Vue进阶(幺肆捌):Vuex 辅助函数详解
  16. Tailwind Base
  17. StumbleuponAnalysis--逻辑回归二元分类
  18. kvm 安装 windows 虚拟机
  19. Unity3D 2021.1.2F1 发布了。赋国际版本下载地址。
  20. linux 下格式化U盘

热门文章

  1. Linux如何统计进程的CPU利用率
  2. Android之使用ThumbnailUtils类来获取视频第一帧缩略图
  3. SpringCloud集成Security安全(Eureka注册中心)
  4. Java8新特性总结 -7.新API和工具
  5. [蓝桥杯][2019年第十届真题c/c++B组]后缀表达式(解释sum -= 2*a[i])
  6. 瓦片经纬度及行列号转换_ArcGIS根据最大最小坐标换算瓦片行列号
  7. PostgreSQL统计信息的几个重要视图
  8. uva-10887-枚举
  9. 谷歌为何会选用TypeScript?
  10. SpringMVC HandlerMethodReturnValueHandler扩展