![]() |
1
8
我想从一开始就指出,比较关系数据库和非关系数据库并不是一对一比较。 当数据更新时,非关系数据库可能会维护一些额外的预计算结构。这会使更新速度稍慢,并需要更多磁盘空间。您使用的纯关系模式没有任何额外功能,这使得更新尽可能快,并将磁盘使用率保持在最低水平。 我将重点介绍如何使用给定的模式。 首先我要做一个综合指数
一个这样的指数就足够了。 然后,我们知道总共只有100万用户,所以最终结果不能超过100万。 5级查询最终生成31250万行(50*50*50*50)。这远远超过了最大可能的结果,这意味着有很多重复。 所以,我会尝试实现中间结果,并在过程的早期消除重复。 我们知道Postgres实现了CTE,所以我会尝试使用它。 比如:
很可能
据我所知,上述查询的执行计划
https://explain.depesz.com/s/Sjov
,博士后不够聪明,做了一些不必要的事情。此外,它还对一些应用程序使用哈希聚合
因此,下一步的尝试是为每个步骤显式地使用带有适当索引的临时表。
此外,我还要定义
看看下面的代码是如何执行的会很有趣。
作为显式临时表的额外好处,您可以测量每个额外级别所需的时间。 |
|
Johnny T · 基于当前值的SQL合并表[重复] 3 月前 |
![]() |
Peter Schofield · 类型转换Postgresql 4 月前 |
![]() |
Kevin Smeeks · Pyspark JDBC分区读取 4 月前 |
![]() |
Andrus · 如何在sql中查找第二个匹配项 4 月前 |