我在SQL Server中创建了一个表,如下所示:
CREATE TABLE [dbo].[WordForm] (
[WordFormId] VARCHAR (20) NOT NULL,
[Ascii] AS (ascii([WordFormId])) PERSISTED,
[WordId] VARCHAR (20) NOT NULL,
[Primary] BIT DEFAULT ((0)) NOT NULL,
[PosId] INT NOT NULL,
[Definition] VARCHAR (MAX) NULL,
[Sample1] VARCHAR (MAX) NULL,
[Synonym] VARCHAR (100) NULL,
[CreatedBy] INT NOT NULL,
[CreatedDate] DATETIME NOT NULL,
[ModifiedBy] INT NOT NULL,
[ModifiedDate] DATETIME NOT NULL,
[Version] ROWVERSION NOT NULL,
[Sample2] VARCHAR (MAX) NULL,
[Sample3] VARCHAR (MAX) NULL,
[Sample4] VARCHAR (MAX) NULL,
[Sample5] VARCHAR (MAX) NULL,
PRIMARY KEY CLUSTERED ([WordFormId] ASC),
CONSTRAINT [FK_WordFormPos] FOREIGN KEY ([PosId]) REFERENCES [dbo].[Pos] ([PosId]),
CONSTRAINT [FK_WordFormWord] FOREIGN KEY ([WordId]) REFERENCES [dbo].[Word] ([WordId])
);
我使用WordFormId
作为主键,因为它是唯一的,并且很容易查找。
现在在我的前端,我意识到创建身份密钥可能有一个优势 并将其用于此表的主键而不是WordFormId。请注意,要将这个表放在透视图中, 最多可容纳9,000行。很少插入,添加和更新数据,所以我不担心更新索引所花费的时间。
我现在想做的是:
a)添加标识列作为主键 b)通过WordId创建每个列和顺序的索引。
如果我要做这两件事(a)和(b)对查询有效吗?我的想法是 查询将在大多数时间使用索引,这将非常相似 在我使用WordId作为主键之前。