我有两个处于一对多关系的表。假设对于 table 中的每一行, tablefoo中可以有 0 或更多行bar引用 中的行foo。
客户想知道 中的所有行在 中bar引用了多少行。foofoo
我可以通过以下查询完成此操作:
SELECT count(bar_id) FROM bar WHERE bar.foo_id = foo.foo_id;
foo但是,如果桌子bar很大怎么办?Sayfoo有 100 万行,并且bar有 1000 万行。假设 99% 的行引用它的行foo数少于 1,000行。bar假设客户通常foo一次要求大约 100 行。
我应该使用带有外键索引的朴素 count() 查询,还是保留一个计数器更好?甚至可以保留一个柜台吗?通过使用触发器更新计数器的原子增量和减量bar,我相信这是可能的,但我可能是错的。