【发布时间】:2018-05-08 03:06:10
【问题描述】:
在数据仓库环境 (SQL Server 2008) 中工作,有一些表大约有 200 万行和 20 列。每天晚上,这些表都会被删除并重新创建。制作它们时,还会构建索引。由于某种原因,这些表上没有聚集索引。但是,有唯一的非聚集索引。似乎不合逻辑。有谁知道改变所有这些表的任何缺点,以便所有这些表都有一个聚集索引。应该会节省一些空间并且性能会更好。
有什么建议吗?
提前致谢。
【问题讨论】:
-
AFAIK all SQL Server 中的表都有一个聚集索引,无论你是否声明一个。
-
@TimBiegeleisen:我认为这不是真的。如果将 PK 创建为“非聚集”,SQL Server 将不会创建隐藏的聚集索引。您可能会将其与 MySQL 混淆吗?
-
@a_horse_with_no_name 默认情况下,SQL Server 将在后台创建聚集索引 (see here)。除了创建另一个命名索引之外,您确定可以将其关闭吗?
-
@TimBiegeleisen
create table foo (id integer primary key nonclustered) -
@a_horse_with_no_name 好的,但这仍然会创建一个索引。我想我的第一条评论用错了。
标签: sql-server indexing clustered-index