【发布时间】:2016-11-23 22:40:39
【问题描述】:
当我提取我的表时,我得到了这个。该表有一个 ID 列,它是一个标识列 (autoinc)。
然后还有可读的客户编号,理论上是唯一的,但该表到目前为止没有强制执行任何操作。
我的客户正在搜索客户编号而不是 ID。
我现在的问题是:我是否仍应在CUSTERMERNUMBER 列中添加索引(如果是集群/非集群?)以提高搜索速度?
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE Customer
(
[ID] [int] IDENTITY(1,1) NOT NULL,
[CUSTOMERNUMBER] [nvarchar](50) NULL,
-- other columns
CONSTRAINT [PK_Customer]
PRIMARY KEY CLUSTERED ([ID] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
【问题讨论】:
-
是的,索引会有所帮助。但是你不能让它聚集,因为你的主键已经是聚集索引。你真的需要在这里使用 nvarchar 吗?您是否打算将 ascii 字符集之外的字符作为客户编号的一部分?
-
客户编号只是“345345453543534”,没有字母字符。
标签: sql-server indexing