关系表是表示多对多 (m:n) 关系的常见解决方案。
以最简单的形式,它将引用两个相关表的外键组合到一个新的复合主键:
A AtoB B ---- ---- ---- *id *Aid *id data *Bid data
应该如何对其进行索引才能在每种 JOIN 情况下提供最佳性能?
- 聚集索引超过(
Aid ASC,Bid ASC
)(我猜这是强制性的) - 选项 #1 加上一个附加索引(
出价 ASC、援助 ASC
) - 或选项 #1 加上 (
Bid ASC
) 上的附加索引 - 还有其他选择吗?也许是供应商特定的东西?
最佳答案
我做了一些测试,这是更新:
要涵盖所有可能的情况,您需要:
CLUSTERED INDEX (a, b)
INDEX (b)
这将涵盖所有JOIN
问题和ORDER BY
请注意,B
上的索引实际上是按 (B, A)
排序的,因为它引用了聚集行。
只要您的 a
和 b
表的 id 上有 PRIMARY KEY
,您就不会 需要创建额外的索引来处理ORDER BY ASC, DESC
。
有关更多详细信息,请参阅我的博客中的条目:
关于sql - 关系表的最佳索引策略是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/851908/