## Oracle 终于添加原生布尔支持
Oracle 最近的 23ai 版本引入了原生布尔数据类型,这一功能在 PostgreSQL 等其他数据库中早已可用(超过二十年)。 之前,Oracle 开发者通过使用 VARCHAR2 或 NUMBER 列来表示真/假值(例如 ‘Y’/’N’,1/0)来解决这一限制。 虽然这些解决方法可行,但由于冗余转换和更大的索引大小而影响了性能。
PostgreSQL 将布尔值高效地存储为单个字节,并允许直接进行逻辑运算,从而简化查询并加快过滤速度——尤其有利于分析型工作负载。 文章重点介绍了 Oracle(23ai 之前)和 PostgreSQL 之间的表结构以及插入/选择语句的差异,展示了原生布尔类型所实现的更简洁、更高效的逻辑。
最终,与模拟布尔值相比,使用 BOOLEAN 提供了更高的存储效率、类型安全性、查询简洁性和可读性。 HexaCluster 提供了一个迁移工具 HexaRocket,可以在数据库迁移期间自动将 Oracle 的 CHAR(1) 和 NUMBER(1) 列映射到 PostgreSQL 的 BOOLEAN 类型。