我正在创建一个 Postgresql 数据库,其中我们有许多(10-40)个具有布尔值的变量。考虑到适度的更新数量和大量的多列搜索,我想弄清楚存储这些数据的最佳方式是什么。
仅创建 30 个左右的布尔列并在必要时创建多列索引似乎非常简单。或者,有人建议创建一个组合所有布尔值的位字符串。似乎第二种选择应该更快,但其他人在网上给出的答案似乎是矛盾的(见下文)。
任何建议或解释都会有所帮助。数据有数千万行,但不会更大,我希望选择返回的数据介于 1/100 到 1/4 之间。
https://stackoverflow.com/questions/14067969/optimized-sql-using-bitwise-operator
更新:
如果您有多个变量(您应该在其中使用单独的列)并且少于 33 个左右(您切换到位串),我发现了一个建议使用整数或大整数的资源。这似乎更多地是由存储大小而不是易于搜索引起的。
https://dba.stackexchange.com/questions/25073/should-i-use-the-postgresql-bit-string