我编写了一个守护进程处理器,它将从一个数据库中获取记录并将它们插入另一个数据库进行同步。它将根据每个记录指示标志获取记录,该标志是布尔数据类型。
我的桌子有数十万条记录。当我选择sync_done为false的记录时,是否会导致任何数据库性能问题?或者我应该为该sync_done列(布尔数据类型)应用索引,以提高性能,因为它将对sync_done值为false的记录应用select操作?
例如,假设我有10000条记录。其中,9500已经同步(sync_done为true),将仅选择记录的其余部分(sync_done为false)。 最终,9500条记录不会受到选择操作的影响。
请建议我如何继续。
答案 0 :(得分:42)
对于像这样的查询,partial index最适合您。
CREATE INDEX ON tbl (id) WHERE sync_done = FALSE
但是,对于这样的用例,可能更喜欢其他同步方法。
LISTEN
/ NOTIFY
。答案 1 :(得分:18)
我建议您不索引表(布尔值是一个低基数字段),但是将其分配为布尔值。
请参阅:http://www.postgresql.org/docs/9.1/static/ddl-partitioning.html
答案 2 :(得分:2)
答案 3 :(得分:1)