我的问题是关于postgresql查找的性能。 我有一个桌子会员,至少有2 000 000名会员和更多会员。 该系统有一些特殊成员(约10 000)。 我有单身成员的逻辑做事,要求我每次都要查询2-3个这些特殊成员。
问题是:在外化时可能会遇到性能提升 10 000名成员进入自己的桌子,即便如此,他们完全平等?因为这些运行的查找速度更快,因为行数更少?
编辑: 查询尽可能简单。只需按主键查询并加入外键即可。
EDIT2: 简化问题。查询表中的主键与30 000 000+行和表10 000行之间是否存在显着的速度差异?还是关于适当的索引呢?
提前谢谢
答案 0 :(得分:1)
对于您的所有查询,请运行EXPLAIN your-query-here
并检查是否使用了索引。
根据该表的更新频率,您可以在Postgres中创建基本上用作过滤器的VIEW。
答案 1 :(得分:1)
在此阶段拆分表格之前,我不会费心,直到您的测量结果清楚地表明VIP成员的查询是瓶颈。
如果以后遇到此问题,您可以选择一些方法来提高性能,而无需更改应用程序中的代码更改。
其中一个是 - VIP会员的单独索引。 您可以创建仅包含VIP成员数据的partial index。这将减少大约log(30000000)/ log(10000)〜= 2次的查找次数。
另一种选择是使用表inheritance,以便您的应用程序仍然认为它适用于一个表,但实际上它被分成两个物理表。