postgresql性能问题

postgresql性能问题,sql,performance,postgresql,database-performance,Sql,Performance,Postgresql,Database Performance,我的问题是关于postgresql查找的性能。 我有一个席位,可以容纳至少20000名或更多的成员。 该系统有一些特殊成员(约10000名)。 我有逻辑处理单个成员的事情,每次都要求我查询2-3个这样的特殊成员 问题是:在将这些外部化时,我是否会体验到性能胜利 1万名成员进入自己的桌子,即使他们完全平等?因为这些行的查找速度更快,因为行更少 编辑: 查询尽可能简单。只需按主键进行查询,并通过外键进行联接 编辑2: 简化问题。从30000行以上的表和10000行的表中通过主键进行查询是否有显著的速

我的问题是关于postgresql查找的性能。 我有一个席位,可以容纳至少20000名或更多的成员。 该系统有一些特殊成员(约10000名)。 我有逻辑处理单个成员的事情,每次都要求我查询2-3个这样的特殊成员

问题是:在将这些外部化时,我是否会体验到性能胜利 1万名成员进入自己的桌子,即使他们完全平等?因为这些行的查找速度更快,因为行更少

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

编辑2: 简化问题。从30000行以上的表和10000行的表中通过主键进行查询是否有显著的速度差异?或者这都是关于适当的索引

先谢谢你

  • 对于所有查询,请在此处运行
    解释查询
    ,并检查是否使用了索引

  • 根据表的更新频率,您可以在Postgres中创建视图,这些视图基本上用作过滤器


  • 在这一阶段,我不会费心拆分表,直到您的度量清楚地表明VIP成员的查询是一个瓶颈

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

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


    另一种选择是使用表,这样应用程序仍然认为它可以使用一个表,但实际上它被拆分为两个物理表

    如果您有适当的索引,我不明白为什么使用另一个表时查找速度会明显加快。但是,这在很大程度上取决于具体的查询,因此您应该使用这些信息编辑您的问题。发布查询的解释,否则这只是猜测。要使建议的表包含10k行,您必须查询300M行的表。后续查询的速度将有所提高(分区有助于提高),但这可能是一个相对较小的收益。除非您要对10k表运行许多查询,否则我怀疑其收益将大于创建它的开销。同样,您的代码变得更加复杂,并且容易出现人为错误。这听起来很像过早的优化。