sql server 会创建任何默认的非聚集索引吗?我们真的应该把所有的 FK 作为非聚集索引吗?这里的权衡是什么
最佳答案
不,SQL Server 不会自动创建非聚集索引。
聚集索引是根据主键自动创建的,除非您的 CREATE TABLE
语句另有说明。
是的,我建议索引外键列,因为这些列最有可能被加入/搜索,而不是使用 IN
、EXISTS
等。但是,意识到低基数值集(例如性别)的索引将相对无用,因为值之间没有足够的差异。
所有索引的权衡是它们可以加快数据检索速度,但减慢数据插入/更新/删除速度。还需要执行维护,因为它们可能会变得碎片化(如硬盘驱动器),但随着时间的推移也可能无法使用。索引也会占用驱动器空间。
关于sql - SQL Server是否默认在表的所有列上创建非聚集索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7781088/