性能调整:为布尔列创建索引

问题描述 投票:30回答:4

我已经编写了一个守护程序处理器,它将从一个数据库中获取行并将其插入到另一个数据库中进行同步。它将基于boolean指示标志sync_done来获取行。

我的表有成千上万的行。当我选择带有sync_done is false的所有行时,是否会引起数据库性能问题?因为仅会提取sync_done值为sync_done的行,所以我应该为该false列应用索引以提高性能吗?

说,我有10000行。其中9500个已经同步(sync_done is true),将不会被选择。

请提出建议,我该怎么做。

我已经编写了一个守护程序处理器,它将从一个数据库中获取行并将其插入到另一个数据库中进行同步。它将基于布尔指示标志sync_done获取行。我的桌子上有...

postgresql indexing database-performance database-replication
4个回答
46
投票

对于这样的查询,partial index将为您提供最好的服务。


19
投票

我建议您不要


2
投票

具有记录和布尔字段的表应该是这样做的方式。


1
投票

索引肯定会有所帮助,但是如果轮询量很大,则轮询可能会带来负载和并发问题,因此可能值得考虑使用诸如Bitmap Index的通知方法或基于Alternative of Bitmap Index in PostgreSQL或基于触发器/数据库队列的通知方法, amqp。我已经使用Slony和Londiste进行基于触发器的复制,并且发现两者都很出色。我的首选是Londiste,因为它更容易设置和管理(如果您有简单的用例,请使用较早的2.分支)。

© www.soinside.com 2019 - 2024. All rights reserved.