【发布时间】:2011-04-04 01:32:38
【问题描述】:
我有一个包含近 300 万行的大表 (SQL Server 2008)。它目前在其主键上有一个聚集索引,在其外键上有一个非聚集索引。
几乎所有对表的查询都是基于外键读取的。
- 是否应该将表上的索引更改为针对外键?
- 执行此操作的最佳流程是什么?
谢谢
【问题讨论】:
-
FK 列中有多少个值?根据数量更改索引几乎没有什么好处 - IE:两个对索引毫无价值。
-
我不确定我是否理解这个问题,但您是在问有多少潜在的 FK 值?如果是这样,大约 16,000....
-
@OMGPonies,在外键值上设置聚集索引不会帮助他的 SQL 查询吗?他的查询会更快,因为它不必对行的数据进行书签查找。
-
@Micky McQuade - 这是我的理解,问题是表格太大,很难对其进行任何结构更改......
-
@Micky McQuade:如果
SELECT DISTINCT fk_column FROM YOUR_TABLE返回几个值,则索引(无论是否聚集)都无济于事。因为不足以区分记录。潜在价值无关紧要。
标签: sql sql-server indexing clustered-index