Biscuit is a specialized PostgreSQL index for fast pattern matching LIKE queries
2 months ago
- #PostgreSQL
- #Pattern Matching
- #Database Optimization
- Biscuit是一种PostgreSQL索引访问方法,专为快速LIKE和ILIKE查询优化,并原生支持多列搜索。
- 它消除了trigram索引中的重复检查开销,显著提升了包含大量通配符查询的性能。
- Biscuit是「采用综合并集与交集技术的位图索引搜索」的缩写(Bitmap Indexed Searching with Comprehensive Union and Intersection Techniques)。
- 新增SQL函数用于检查构建时配置及CRoaring位图支持状态。
- 包含诊断视图,可快速查看扩展版本、CRoaring启用状态及索引统计信息。
- 支持自动将多种数据类型(文本、数值、日期/时间、布尔值)转换为可搜索文本。
- 采用字符位置位图实现高效模式匹配,并对常见查询模式进行优化。
- 特性包括:提前终止、批量操作和直接位图迭代以最小化开销。
- 自动分析并按选择性重排查询谓词,实现最优执行计划。
- 基准测试显示其性能显著优于pg_trgm,尤其在多列和聚合查询场景。
- 推荐用于:含大量通配符的LIKE/ILIKE查询、多列搜索及需要精确结果的场景。
- 当前限制:不支持正则表达式和区域特定的排序规则。
- 采用MIT开源协议,欢迎贡献并行索引构建、更多数据类型支持等功能。