sql - SQL Server是否默认在表的所有列上创建非聚集索引

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

sql server 会创建任何默认的非聚集索引吗?我们真的应该把所有的 FK 作为非聚集索引吗?这里的权衡是什么

最佳答案

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

是的,我建议索引外键列,因为这些列最有可能被加入/搜索,而不是使用 INEXISTS 等。但是,意识到低基数值集(例如性别)的索引将相对无用,因为值之间没有足够的差异。

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

关于sql - SQL Server是否默认在表的所有列上创建非聚集索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7781088/

相关文章:

sql - (SQL Server 2005) 管理大量插入语句的好方法?

mysql - 如何使用 SQL 仅选择每个组中最新的一个?

sql - 带有两个行终止符的 BULK INSERT

sql - 在 microsoft sql server 2008 中运行查询之前如何知道有多少行将受到影响

sql - 如何在Groovy/Grails Spoc中模拟SQL调用

php - 如何使用 sql 查询显示特定类别下的所有数据?

sql-server - 与 SQL Server 2005 相比,使用 SQL Server 2008 是否有任何性能优势?

sql-server - 从 Powershell 调用 TRUNCATE 和 BULK INSERT INTO SQL 命令

sql - ADO.net 是仅在指定的存储过程调用后返回结果,还是等到所有触发器执行完毕才返回结果?

sql-server - 如何分离变量和值,然后插入表中?