GUID主键,单独的聚集索引列

rory.ap

我在生产中有一个数据库应用程序,所有表都使用GUID主键,这些键当前已设置为聚簇索引。我了解到,出于性能考虑,这是一个较差的设计。我已经阅读了很多有关该主题的文章,包括Kimberly Tripp撰写这篇精彩文章

是否可以通过简单地创建类型的自动递增索引列INT并将其设置为聚集索引来提高性能我从Kimberly的文章中了解到,所有非聚集索引(例如,如果执行此操作,则将向前移动GUID主键)都将引用聚集索引。但是,如果我在WHERE子句中使用GUID主键搜索记录,这实际上会提高性能吗?

另外,为了获得性能提升,我是否必须按照创建记录时的自然顺序填充现有记录的新列?

编辑:解决这个问题是否是另一个问题的重复:另一个问题是询问有关使用GUID主键的性能方面的一般最佳实践。没有讨论具体的方法。另一方面,我的问题是具体询问添加类型的自动递增索引列INT是否将有助于改善GUID主键的问题。此外,我的问题然后询问我是否必须按其“自然顺序”填充新列以实现收益,由于其较高的通用性,因此在另一个问题中也未解决。

用户名

有几件事情要考虑:

  1. 是的,您是正确的,聚集索引键将出现在所有非聚集索引中。拥有较小的密钥将有助于节省磁盘和缓冲池中的空间。

  2. 具有标识的聚集键将为您提供表插入的结尾,并有可能(取决于负载)使该插入热点成为可能。现在的GUIDS是随机插入的,不会产生太多的热点,但是会导致更多的页面拆分,这也可能会对性能产生不利影响。

  3. 要回答提高性能的问题,您当前的问题领域是什么?有什么可以处理的数据吗?如果您现在没有任何问题,则可能不值得进行更改。

  4. 当您将列添加为标识时,它应该为自己设定种子,顺序实际上并不重要。

  5. 如果确实使用INT列作为键,请在GUID列上创建唯一的非聚集索引,以使优化器知道只有一个值(优化)并允许快速查找。如果价格不太贵,则覆盖它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

主键列上的非聚集索引?

来自分类Dev

非主键列上的聚集索引

来自分类Dev

聚集索引的GUID替代方法

来自分类Dev

外键或主键上的聚集索引?

来自分类Dev

复合主键/聚集索引,碎片,性能

来自分类Dev

非聚集索引(包括列)

来自分类Dev

非聚集索引:包括主键的唯一索引与没有主键的非唯一索引

来自分类Dev

主键 - DB2 中的主索引 Vs 主键 - SQL 中的聚集索引

来自分类Dev

聚集索引中列的最佳顺序

来自分类Dev

非群集GUID主键或具有唯一索引的群集int主键和GUID次键?

来自分类Dev

按聚集列存储索引中的索引排序

来自分类Dev

索引视图上的SQL Server列存储聚集索引

来自分类Dev

索引视图上的SQL Server列存储聚集索引

来自分类Dev

Asp.net身份:为什么聚集索引位于guid(nvarchar)列上,以及如何更改它?

来自分类Dev

Asp.net身份:为什么聚集索引位于guid(nvarchar)列上,以及如何更改它?

来自分类Dev

SQL查询优化:从非聚集索引获取额外的列数据

来自分类Dev

具有多列的SQL Server非聚集索引

来自分类Dev

是否可以从表的列中删除非聚集索引?

来自分类Dev

自动生成不是实体框架中的主键的GUID列

来自分类Dev

为列创建单独的索引是否有意义,该列也是复合主键的一部分?

来自分类Dev

PostgreSQL中的聚集索引?

来自分类Dev

多列索引 vs 单独索引 vs 部分索引

来自分类Dev

numpy:在单独的列中获取索引值

来自分类Dev

将GUID主键更改为整数主键

来自分类Dev

对列执行聚集索引保证返回根据该列排序的行

来自分类Dev

在SQL Server中,多列非聚集索引中的列顺序是否重要?

来自分类Dev

为什么非聚集索引扫描比聚集索引扫描更快?

来自分类Dev

聚集索引和非聚集索引之间的性能差异

来自分类Dev

SQL Server:聚集索引比等效的非聚集索引慢得多

Related 相关文章

  1. 1

    主键列上的非聚集索引?

  2. 2

    非主键列上的聚集索引

  3. 3

    聚集索引的GUID替代方法

  4. 4

    外键或主键上的聚集索引?

  5. 5

    复合主键/聚集索引,碎片,性能

  6. 6

    非聚集索引(包括列)

  7. 7

    非聚集索引:包括主键的唯一索引与没有主键的非唯一索引

  8. 8

    主键 - DB2 中的主索引 Vs 主键 - SQL 中的聚集索引

  9. 9

    聚集索引中列的最佳顺序

  10. 10

    非群集GUID主键或具有唯一索引的群集int主键和GUID次键?

  11. 11

    按聚集列存储索引中的索引排序

  12. 12

    索引视图上的SQL Server列存储聚集索引

  13. 13

    索引视图上的SQL Server列存储聚集索引

  14. 14

    Asp.net身份:为什么聚集索引位于guid(nvarchar)列上,以及如何更改它?

  15. 15

    Asp.net身份:为什么聚集索引位于guid(nvarchar)列上,以及如何更改它?

  16. 16

    SQL查询优化:从非聚集索引获取额外的列数据

  17. 17

    具有多列的SQL Server非聚集索引

  18. 18

    是否可以从表的列中删除非聚集索引?

  19. 19

    自动生成不是实体框架中的主键的GUID列

  20. 20

    为列创建单独的索引是否有意义,该列也是复合主键的一部分?

  21. 21

    PostgreSQL中的聚集索引?

  22. 22

    多列索引 vs 单独索引 vs 部分索引

  23. 23

    numpy:在单独的列中获取索引值

  24. 24

    将GUID主键更改为整数主键

  25. 25

    对列执行聚集索引保证返回根据该列排序的行

  26. 26

    在SQL Server中,多列非聚集索引中的列顺序是否重要?

  27. 27

    为什么非聚集索引扫描比聚集索引扫描更快?

  28. 28

    聚集索引和非聚集索引之间的性能差异

  29. 29

    SQL Server:聚集索引比等效的非聚集索引慢得多

热门标签

归档