考虑到非聚集索引是基于聚集索引的,非聚集索引是否有必要列出聚集索引中包含的任何列?
换句话说,如果 Products 表包含 ProductID 上的聚集索引,则在创建建议包含 ProductID 列的非聚集索引时,是否仍需要将其添加为列?
如果没有,是否存在将列名添加到非聚集索引的情况?
考虑到非聚集索引是基于聚集索引的,非聚集索引是否有必要列出聚集索引中包含的任何列?
换句话说,如果 Products 表包含 ProductID 上的聚集索引,则在创建建议包含 ProductID 列的非聚集索引时,是否仍需要将其添加为列?
如果没有,是否存在将列名添加到非聚集索引的情况?
在 SQL Server 中,聚集索引键列始终添加到非聚集索引中以充当行定位器(参考:关于非聚集索引键的更多信息)。
对于声明为唯一的 NCI,它们将作为包含列添加,否则将添加到键的末尾。
如果默认位置不适合您的查询,您可能需要显式添加列。例如如果你想控制
ASC
/DESC
方向或者你想控制键列在索引中的位置。