8kb*_*8kb 16 sql-server performance database-design guid sql-server-2008
我正在使用遗留数据库将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)
Run Code Online (Sandbox Code Playgroud)
我认为将GUID存储为唯一标识符会更好,因为它只有16个字节而不是36个字节.
将GUID存储为varchar有什么好处吗?
Mit*_*eat 13
也许只有你可以从SELECT语句中"读取"它们的事实(尽管我认为这不是特别有用,因为你可以在select中使用函数来使Uniqueidentifiers可显示).
如果表很大,则每行节省20个字节是相当可观的.
由于许多原因,我会选择使用uniqueidentifier,
它将占用更少的空间;它是唯一的,因此不能重复。对于比较和与性能特别相关的问题,以及易于获得唯一的默认值等,这要好得多。
除非出于非常特殊的原因需要使用varchar,否则我将使用uniqueidentifier。