Tom*_*bes 6 foreign-key sql-server primary-key clustered-index full-text-search
过去,我选择创建的datetime列作为表中不合适的聚集索引。
现在我得出结论(基于执行计划)选择 ID身份主键作为聚集键会更好,因为它经常被作为外键引用。
我想删除当前的聚集键并创建一个新的,但我不能删除主键,因为full-text索引依赖于该主键。
我可以将主键切换为聚集索引还是需要删除主键和所有依赖对象的链?
下面你会找到表定义和聚集索引定义。
CREATE TABLE [dbo].[Realty](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Created] [datetime] NOT NULL,
....
CONSTRAINT [PK_Realty] PRIMARY KEY NONCLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
...
CREATE CLUSTERED INDEX [Created] ON [dbo].[Realty]
(
[Created] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
GO
Run Code Online (Sandbox Code Playgroud)
只需删除现有的聚集索引,然后在该ID列上创建一个新的索引即可。
DROP INDEX [Created] ON dbo.Realty;
GO
CREATE UNIQUE CLUSTERED INDEX CX_Realty ON dbo.Realty (ID);
GO
Run Code Online (Sandbox Code Playgroud)
当然,您需要在维护时段执行此操作,这样就不会造成太多阻塞。WITH (ONLINE=ON)如果您有企业版,您可以通过添加到语句来在线执行 CREATE INDEX 操作。
| 归档时间: |
|
| 查看次数: |
17575 次 |
| 最近记录: |