优化巨大的 Postgres 表以实现快速读取

Tur*_*rgs 5 postgresql performance partitioning

我即将创建一个包含 15 亿行的 Postgres 表。该表将只有一个 TEXT 列。

该表实际上是一个黑名单。当我的软件用户保存某些数据时,会查找该表以确保他们保存的值不存在于其中。

我可以做些什么来优化 Postgres 或该表以尽可能快地“读取”?该表将仅被写入大约一年一次。

Mic*_*een 12

添加将保存文本值的散列的第二列。在哈希上创建索引。即使存在散列冲突,也只有几行可以读取并对文本值执行完整比较。

  • 您可以保留额外的列并创建一个功能索引: CREATE INDEX foo ON t1((md5(c1)); 在您的选择中使用 WHERE md5(c1) = md5('content') 就可以了。检查 EXPLAIN (4认同)