Hologres建表字符串默认都是bitmap索引,如果字符串的是高基数的,会不会有影响?我不太明白如果有影响的话,为什么要默认创建?就是说影响存储,对查询还是有帮助的
Hologres建表字符串默认都是bitmap索引,如果字符串的是高基数的,会不会有影响?[阿里云实时数仓]
「点点赞赏,手留余香」
还没有人赞赏,快来当第一个赞赏的人吧!
Hologres建表字符串默认都是bitmap索引,如果字符串的是高基数的,会不会有影响?我不太明白如果有影响的话,为什么要默认创建?就是说影响存储,对查询还是有帮助的
影响只是影响存储,会多一点存储,不需要的话可以去掉。具体原理可以看下文档哈:https://help.aliyun.com/zh/hologres/user-guide/bitmap-index?spm=a2c4g.11186623.0.0.132528b0PdL1ve,此回答整理自钉群“实时数仓Hologres交流群”
Hologres 在创建字符串类型字段时会默认创建 bitmap 索引,这是因为 bitmap 索引特别适合处理高基数字符串类型的列,它可以利用位图算法有效提高查询效率,而且压缩后的 bitmap 索引也更节省存储空间。
然而,当列是低基数或稀疏时,bitmap 索引可能不会带来太多好处,甚至可能会带来负面影响。因此,如果发现此类情况,请尝试将字符串类型的字段转换为合适的低基数或稀疏类型的字段,或者更换其他类型的索引,以减少存储空间占用。如果您希望优化查询性能,可以考虑其他类型的索引,如 B-tree 索引或 Hash 索引等。