postgresql 性能问题

postgresql performance issues

我的问题是关于 postgresql 查找的性能。 我有 table 个成员,至少有 20 000 000 个成员,甚至更多。 该系统有一些特殊成员(约 10 000 人)。 我有处理单个成员的逻辑,要求我每次都肯定地查询这些特殊成员中的 2-3 个。

问题是:在将这些外化时,我是否会体验到性能提升 10000个成员变成一个自己的table,就算这样他们也是完全平等的?因为查找这些运行得更快,因为行少得多??

编辑: 查询尽可能简单。只需按主键查询并通过外键连接。

编辑2: 为了简化问题。通过 table 的主键查询 30 000 000 多行和 table 10 000 行之间是否存在显着的速度差异?还是关于适当的索引?

提前致谢

  1. 对于所有查询 运行 EXPLAIN your-query-here 并检查是否使用了索引。

  2. 根据 table 的更新频率,您可以在 Postgres 中创建基本上用作过滤器的视图。

我不会在这个阶段费心拆分 table,除非您有测量结果清楚地表明对 VIP 会员的查询是一个瓶颈。

如果以后您在这方面遇到问题,您将有一些选项可以提高性能,而无需更改应用程序中的代码。

其中之一是——VIP会员单独索引。 您可以创建仅包含 VIP 会员数据的 partial index。这将减少大约 log(30000000)/log(10000) ~= 2 次的查找次数。

另一种选择是使用 table inheritance 这样您的应用程序仍然认为它可以使用一个 table 但实际上它被分成两个物理 table .