讀過很多博客後,我決定創建具有guid/UNIQUEIDENTIFIER作爲主鍵的表,但是使用非聚簇索引和bigint作爲聚簇鍵。使用bigint作爲非羣集鍵和guid/UNIQUEIDENTIFIER作爲主鍵非羣集
首先,在這種情況下,正確的DDL語法是什麼。另外,我認爲使用bigint作爲外鍵是正確的選擇。它是否正確?
下面是十個首發:
IF OBJECT_ID('dbo.Table1', 'U') IS NOT NULL
DROP TABLE dbo.Table1;
CREATE TABLE dbo.Table1
(
[Table1Id] [BIGINT] IDENTITY(1,1) NOT NULL,
[Table1Guid] [UNIQUEIDENTIFIER] NOT NULL,
[PayLoad] NVARCHAR(200) NULL
PRIMARY KEY CLUSTERED
(
[Table1Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
)
CREATE NONCLUSTERED INDEX IX_Table1_Table1Guid
ON dbo.Table1 (Table1Guid);
GO
你爲什麼得出兩個鍵的結論? – Paparazzi
你還會怎麼做?使用guid作爲集羣密鑰是不好的做法。 – cs0815
使用guid作爲非集羣密鑰是一種很好的做法?碎片化索引是一個分段索引。冗餘的非零碎索引無法彌補這一點。冗餘索引增加了什麼值?它肯定有一些開銷。 – Paparazzi