【发布时间】:2011-10-15 22:31:52
【问题描述】:
sql server 会创建任何默认的非聚集索引吗?我们真的应该将所有 FK 都作为非聚集索引吗?这里有什么取舍
【问题讨论】:
标签: sql sql-server tsql sql-server-2008 indexing
sql server 会创建任何默认的非聚集索引吗?我们真的应该将所有 FK 都作为非聚集索引吗?这里有什么取舍
【问题讨论】:
标签: sql sql-server tsql sql-server-2008 indexing
不,SQL Server 不会自动创建非聚集索引。
除非您的 CREATE TABLE 语句另有说明,否则会根据主键自动创建聚集索引。
是的,我建议对外键列进行索引,因为这些列最有可能使用 IN、EXISTS 等进行 JOIN/搜索。但是,请注意,低基数集上的索引价值观(例如性别)将相对无用,因为价值观之间没有足够的差异。
所有索引的权衡是它们可以加快数据检索,但减慢数据插入/更新/删除。还需要进行维护,因为它们可能会碎片化(如硬盘驱动器),但随着时间的推移也可能无法使用。索引也会占用驱动器空间。
【讨论】: