首页 > 数据库 >sql server 聚集索引,非聚集索引,Identity ,gudi,主键的概念和比较

sql server 聚集索引,非聚集索引,Identity ,gudi,主键的概念和比较

时间:2022-11-14 14:13:20浏览次数:66  
标签:gudi 聚集 节点 索引 GUID 主键

sql server 聚集索引,非聚集索引,Identity ,gudi,主键的概念和比较

 

索引

可以把索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。

聚集索引和非集聚索引

聚集索引:该索引中键值的逻辑顺序决定了表中相应行的物理顺序。
非聚集索引:该索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同。
索引是通过二叉树的数据结构来描述的,我们可以这么理解聚集索引:索引的叶节点就是数据节点。而非聚集索引的叶节点仍然是索引节点,只不过有一个指针指向对应的数据块。

聚集索引图:

image.png

叶子节点就是真实的数据节点

非集聚索引图:

image.png
叶子节点也是数据节点,该节点存储的是真实数据的内存地址。

Identity

identity表示该字段的值会自动更新,如果我们设置了标识符,并且设置自增和自增种子,那么数据库里面的改字段就会按照我们的自增种子自动进行递增,通常我们使用改字段作为主键。

gudi

全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符。GUID主要用于在拥有多个节点、多台计算机的网络或系统中。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。GUID 的总数达到了2128(3.4×1038)个,所以随机生成两个相同GUID的可能性非常小,但并不为0。所以,用于生成GUID的算法通常都加入了非随机的参数(如时间),以保证这种重复的情况不会发生。

GUID一词有时也专指微软对UUID标准的实现。

在 Windows 平台上,GUID 广泛应用于微软的产品中,用于标识如注册表项、类及接口标识、数据库、系统目录等对象。

主键

通常选择自增int作为主键,除非有特殊需要,并且还让SQL Server自动生成/维护该字段。
由于聚类键的GUID并不是最优的,因为它的随机性,它将导致大量的页面和索引碎片,并且通常会导致性能下降。
因为主键默认是聚集索引,所以我们再使用guid作为主键的时候数据量比较大的话就有性能问题。
但是如果数据量小就放心的使用吧,但是如果是分布式的数据库,又不能用int作为主键怎么办,这个时候我们可以选择两种方式混合用,再自己的数据库用int 这样查询和修改就比较快,同时使用guid作为唯一标识,其它表关联的外键就用gudi来关联,这样查询关联数据的时候就使用非集聚索引,完美解决!

作者:SunSpring

出处:https://www.cnblogs.com/SunSpring/p/16308812.html

本文版权归作者所有,欢迎转载,但未经作者同意需在文章页面明显位置给出原文链接。

     

标签:gudi,聚集,节点,索引,GUID,主键
From: https://www.cnblogs.com/sexintercourse/p/16888865.html

相关文章

  • 使用雪花id或uuid作为Mysql主键,被老板怼了一顿!
    前言:在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采......
  • 数据库索引:索引并不是万能药
    几乎所有的业务项目都会涉及数据存储,虽然当前各种NoSQL和文件系统大行其道,但MySQL等关系型数据库因为满足ACID、可靠性高、对开发友好等特点,仍然最常被用于存储重要数据。在......
  • Java索引
    Java运算符Java基础数据类型Java数组Java数组工具类--ArraysJava比较器--Compare/ComparableJava集合Java函数编程Java泛型编程......
  • torch中通过索引矩阵获取tensor
    1.torch中的索引矩阵torch中有很多场景下都会生成索引矩阵,索引矩阵的shape和tensor的shape是相同的a_tensor,a_index=torch.topk(a,dim=1)#ora_tensor,a_index......
  • MySQL 联合索引、复合索引
    复合索引也叫联合索引,经常使用,遇到问题,可以看下这3篇文章:1. https://www.jb51.net/article/229580.htm2.https://blog.csdn.net/CSDN_LGY_Java/article/details/11159......
  • mysql 索引优化 explain,复合索引,联合索引
    本节是关于MySQL的复合索引相关的知识,两个或更多个列上的索引被称作复合索引,本文主要介绍了mysql联合索引生效的条件及失效的条件,感兴趣的可以了解一下:必须用实例说话:先......
  • 5.numpy数组的索引和切片
    三、ndarray的基本操作  索引和切片1.索引维与列表完全一致多维时同理2.切片维与列表完全一致多维时同理将数据反转,例如[1,2,3]--->[3,2,1]两个::进行切片-------......
  • MySQL-存储引擎-索引
    事务方式1:set@@autocommit=0-- 将事务提交方式设置为手动方式2:starttransaction-- 开启事务 事务四大特性ACID:A:原子性(Atomicity)事务是不可分割的最小操作单......
  • 【索引】日总结索引
    date&linkcontext\(2022.11.6\)三道模拟赛题+CSP-S2022总结\(2022.11.7\)2022NOIPA层联测22四个口胡题解\(2022.11.8\)2022NOIPA层联测23T2T3T4......
  • 自增主键为什么不是连续的?
    39|自增主键为什么不是连续的?自增主键保存在哪里?自增主键并不保存在表结构定义的frm文件中。MyISAM引擎自增值保存在数据文件中MySQL8.0之前,自增值保存在内存中,重......