【发布时间】:2018-04-01 17:44:03
【问题描述】:
我在当前任务中遇到了一个问题,涉及一个简单的 n 对 m 关系表。
在我的表格中,我有以下列:
(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 倍。
行的查询百分比预计约为:
(a):40%
(b):40%
(a) & (b): 20%
【问题讨论】:
-
这取决于, table_a 与 table_b 有多大? (a)、(b)、(a)&(b) 上的搜索是否同样频繁?
-
为问题添加了预期值。
标签: sql composite-primary-key indices