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


    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来关联,这样查询关联数据的时候就使用非集聚索引,完美解决!

     
     
  • 相关阅读:
    爬虫简介
    MongoDb安装pymongo和mongoengine使用
    简单使用WebSocket实现聊天室
    DBUtils
    FLASK 的Session和MoudelForm插件
    第十一篇 CBV和闪现
    HDOJ 4699 Editor 对顶栈
    [NOI1999]内存分配
    横截面图
    STL List Set
  • 原文地址:https://www.cnblogs.com/sexintercourse/p/16888865.html
Copyright © 2020-2023  润新知