sql server将创建任何默认的非聚集索引吗?我们真的应该将所有FK都作为非聚集索引吗?这里的权衡是什么
否,SQL Server不会自动创建非聚集索引。 除非您的CREATE TABLE声明另有说明,否则将基于主键自动创建聚簇索引。
CREATE TABLE
是的,我会建议索引外键列,因为这些是最容易被JOIN’d /搜索不要使用IN,EXISTS等等。但是,要知道,在低基数的设定值(性别为例)的指标会比较没有用,因为值之间没有足够的差异。
IN
EXISTS
所有索引之间的权衡是它们可以加快数据检索速度,但会减慢数据插入/更新/删除速度。还需要执行维护,因为它们可能会变得碎片化(例如硬盘驱动器),但随着时间的推移可能不会被使用。索引也占用驱动器空间。