【问题标题】:Does SQL Server creates Non clustered index on all columns of a table by defaultSQL Server 是否默认在表的所有列上创建非聚集索引
【发布时间】:2011-10-15 22:31:52
【问题描述】:

sql server 会创建任何默认的非聚集索引吗?我们真的应该将所有 FK 都作为非聚集索引吗?这里有什么取舍

【问题讨论】:

    标签: sql sql-server tsql sql-server-2008 indexing


    【解决方案1】:

    不,SQL Server 不会自动创建非聚集索引。
    除非您的 CREATE TABLE 语句另有说明,否则会根据主键自动创建聚集索引。

    是的,我建议对外键列进行索引,因为这些列最有可能使用 INEXISTS 等进行 JOIN/搜索。但是,请注意,低基数集上的索引价值观(例如性别)将相对无用,因为价值观之间没有足够的差异。

    所有索引的权衡是它们可以加快数据检索,但减慢数据插入/更新/删除。还需要进行维护,因为它们可能会碎片化(如硬盘驱动器),但随着时间的推移也可能无法使用。索引也会占用驱动器空间。

    【讨论】:

    • 谢谢...如果我使用它与子表连接的 FK 上存在非聚集键且没有非聚集键会发生什么情况。它使用什么扫描?完整、索引搜索和索引扫描?
    • 取决于查询、索引、表统计信息和优化器——这意味着查看解释计划。
    猜你喜欢
    • 2013-05-20
    • 1970-01-01
    • 2014-02-23
    • 1970-01-01
    • 2011-06-02
    • 2018-05-08
    • 1970-01-01
    • 2011-11-30
    相关资源
    最近更新 更多