代码之家  ›  专栏  ›  技术社区  ›  8kb

GUID:varchar(36)与uniqueidentifier

  •  15
  • 8kb  · 技术社区  · 15 年前

    我正在使用一个旧数据库,它将GUID值存储为varchar(36)数据类型:

    CREATE TABLE T_Rows (
        RowID    VARCHAR(36) NOT NULL PRIMARY KEY,
        RowValue INT         NOT NULL
    ) 
    
    INSERT T_Rows (RowID, RowValue) VALUES (NEWID(), 1)
    

    我假设将GUID存储为uniqueidentifier会更好,因为它的大小只有16字节,而不是36字节。

    将GUID存储为varchar有什么好处吗?

    5 回复  |  直到 15 年前
        1
  •  13
  •   Mitch Wheat    15 年前

    如果表很大,每行节省20字节是相当可观的。

        2
  •  5
  •   MSI    15 年前

    我会选择uniqueidentifier,原因有很多,比如,

    我会使用uniqueidentifier,除非出于非常具体的原因需要使用varchar。

        3
  •  2
  •   Mitch Wheat    9 年前

    如果您的数据库是Oracle,那么旧版本Oracle(9)中原始数据索引的性能要比索引varchar(36)字段差得多。幸运的是,在oracle10和oracle11中,这种情况发生了变化。

        4
  •  1
  •   Dean Harding    15 年前

    UNIQUEIDENTIFIER

        5
  •  0
  •   Mitch Wheat    9 年前

    当然不是,因为我确信您知道遗留数据库经常存在设计缺陷:P因为GUID是16字节,所以它可能会占用数据库中的16字节。每个条目将获得20个字节

    推荐文章