我已经编写了一个守护程序处理器,它将从一个数据库中获取行并将其插入到另一个数据库中进行同步。它将基于boolean
指示标志sync_done
来获取行。
我的表有成千上万的行。当我选择带有sync_done is false
的所有行时,是否会引起数据库性能问题?因为仅会提取sync_done
值为sync_done
的行,所以我应该为该false
列应用索引以提高性能吗?
说,我有10000行。其中9500个已经同步(sync_done is true
),将不会被选择。
请提出建议,我该怎么做。
我已经编写了一个守护程序处理器,它将从一个数据库中获取行并将其插入到另一个数据库中进行同步。它将基于布尔指示标志sync_done获取行。我的桌子上有...
对于这样的查询,partial index将为您提供最好的服务。
我建议您不要
具有记录和布尔字段的表应该是这样做的方式。
索引肯定会有所帮助,但是如果轮询量很大,则轮询可能会带来负载和并发问题,因此可能值得考虑使用诸如Bitmap Index的通知方法或基于Alternative of Bitmap Index in PostgreSQL或基于触发器/数据库队列的通知方法, amqp。我已经使用Slony和Londiste进行基于触发器的复制,并且发现两者都很出色。我的首选是Londiste,因为它更容易设置和管理(如果您有简单的用例,请使用较早的2.分支)。