有很多关于索引列顺序的文章,我明白了。但是,我没有找到有关唯一索引的信息。
简单示例:Product
和 Category
表具有 n-n 关系,使用具有 3 列的 ProductCategoryMapping
表:身份 Id
、ProductId
和 CategoryId
。
如果我创建一个包含 2 列的唯一索引 UN_ProductCategoryMapping_Product
:ProductId
和 CategoryId
,我是否还应该以相反的顺序创建另一个唯一索引,假设我有时想“列出某个类别的所有产品”,有时想“列出产品所属的所有类别”?
在这种情况下,SQL Server 是否足够智能来进行优化?
最佳答案
唯一性不依赖于列顺序。如果您声明第 1、2 和 3 列的组合是唯一的,而其他人声明第 2、1 和 3 列的组合是唯一的,那么您在声明相同的事实。
但这并不是说所有索引都相同或同样有用。仅当您可以使用索引的所有最左边的列时,索引才(可能)有用。如果您的查询不使用任何索引的最左侧列,则满足查询的唯一方法是扫描整个表。
关于sql-server - 唯一索引列顺序-重要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42258194/