SQL n 到 m table 复合键和单个索引

SQL n to m table Composite Key and single indices

我在涉及简单 n 对 m 关系的当前任务中遇到问题 table。

在我的 table 中,我有以下列:
(a): FK 到 table_a
(b): FK 到 table_b

通常的方法是在 (a) 和 (b) 上创建一个复合主键,让我能够有效地搜索:
(一)
(a) & (b)

但我还需要能够单独搜索 (b) 的效率。所以总的来说,这是我的搜索场景:
(一)
(b)
(a) & (b)

创建
会不会更好 1. (a) & (b) 上的复合 PK 和 (b) 上的另一个单一索引?
2. 或者在 (a) 和 (b) 上创建两个单独的索引,并接受这样一个事实,即搜索 (a) & (b) 可能不会尽可能快(因为它需要查找两个单独的索引)之一)?

将来可能还会有 (c),所以我需要搜索 (a)、(b)、(c) 或它们之间的任意组合。

有谁曾经遇到过这个问题并且知道合理的解决方案吗?

编辑:
额外要求的信息:
table_b 将比 table_a 大很多,可能大 10-20 倍。
行的查询百分比预计约为:
(一): 40%
(b): 40%
(a) & (b): 20%

您应该创建两个索引,一个是 (a, b) 上的复合索引,另一个仅在 (b)b 和更多列上创建。

如果您无论如何都要创建两个索引,那么您已经承担了这两个索引的费用。相对于维护索引的开销,从索引中删除列是一个小的节省。您还不如拥有最适合您的查询的索引。