我已经编写了一个守护进程处理器,它将从一个数据库中获取行,并将它们插入另一个数据库中进行同步.它将根据boolean指示标志sync_done获取行.

我的桌子有数十万行.当我用sync_done is false Select 所有行时,是否会导致任何数据库性能问题?我是否应该对sync_done列应用索引以提高性能,因为只获取sync_done值为false的行?

我有一万行.其中9500个已经同步(sync_done is true个),不会被选中.

请建议我该怎么做.

推荐答案

对于这样的查询,partial index只覆盖未同步的行是最好的.

CREATE INDEX ON tbl (id) WHERE sync_done = FALSE;

然而,对于这样的用例,其他同步方法可能更可取:

Postgresql相关问答推荐

将real[]数组作为完整的浮点值从postquist返回

PostgreSQL 连接字符串的正则表达式

如何使用 go-pg 包删除所有记录

如何准确确定边界附近的点和地理的 ST_Intersects(ST_Intersects geography vs. Geometry diffrepancy)

为什么在 PostgreSQL 中忽略查询超时?

如何计算过滤器中的百分比

Cloud SQL 时间点 数据驻留

PostgreSQL - 继承表的常见自动增量

PostgreSQL 在 mySQL 中的 date_trunc

SQLAlchemy 中使用什么类型存储字节字符串?

Postgresql - 在 Big Data 库中使用数组的性能

如何在可选参数上查询 postgres?

Mac psql/readline - 未加载库

PostgreSQL:如何安装 plpythonu 扩展

避免 created_at 和 updated_at 由 sequelize 自动生成

从 PostgreSQL 中的时间戳获取日期

如何增加 max_locks_per_transaction

SqlAlchemy:多列的不同计数

大型查询后 psycopg2 泄漏内存

使用 Hibernate 注释映射 PostgreSQL 串行类型