Sql server SQL Server索引-索引中包含哪些列?
问题1:在SQL Server数据库中为外键列创建索引值得吗 问题2:如果我在SQL Server数据库中有两个相关的表,并且我想在外键列上创建一个索引以提高性能,那么我需要在索引中包括哪些列,以及什么类型的索引最适合 例如Sql server SQL Server索引-索引中包含哪些列?,sql-server,Sql Server,问题1:在SQL Server数据库中为外键列创建索引值得吗 问题2:如果我在SQL Server数据库中有两个相关的表,并且我想在外键列上创建一个索引以提高性能,那么我需要在索引中包括哪些列,以及什么类型的索引最适合 例如 表1 表1ID int(主键) 表2 表2ID int(主键) 表1ID int(外键) …我是仅使用Table1ID为Table2创建索引,还是还需要包含主键(Table2ID) 问题3:如果我扩展示例以包括与表1和表2都相关的第三个表,我是为每一列创建一个索引还是为两列
表1
表1ID int(主键)
表2
表2ID int(主键)表1ID int(外键) …我是仅使用Table1ID为Table2创建索引,还是还需要包含主键(Table2ID) 问题3:如果我扩展示例以包括与表1和表2都相关的第三个表,我是为每一列创建一个索引还是为两列创建一个索引
表3
表3id int(主键)表1ID int(外键)
表2ID int(外键)Q1是。(如果您发现它们没有被经常使用,您可以随时在以后删除它们) 问题2。我是否仅使用Table1ID为Table2创建索引是。假设索引的主要预期用途是帮助优化人员连接这两个表。(而不是满足作为整体查询工作负载一部分的其他查询) 第三季度是。带有外键的每一列都应该有一个单独的父键表索引 (假设您有一个OLTP数据库而不是OLAP数据库)
本文提供的TSQL将生成数据库中所有缺失外键索引的脚本:您想创建的索引都不是一个坏主意。但是,如果您正在寻找性能度量,则需要查看最常用的表。WHERE子句中的哪些列最多;并将索引建立在这些基础上
还要寻找最佳基数,并将其放在WHERE子句的顶部。考虑分区。谢谢回答米切尔小麦,我应该创建什么类型的索引(聚集或非聚集)?像创建聚集索引IX_Table2_Table1ID ON Table2(Table1ID)这样的内容是否足够,或者我是否应该添加任何选项?通常,所有FK索引都是非聚集索引。