doris基本操作,08-实战,索引
2023-12-27 07:57:17
简述
目前的Doris支持两类索引
内建的智能索引,包括前缀索引和ZoneMap索引。
用户创建的二级索引,包括Bloom Filter索引和Bitmap倒排索引。
前缀索引
在排序的基础上,根据给定的前缀字段,快速查询数据的索引方式。
我们将一行数据的前36个字节,作为这一行数据的前缀索引。
当遇到varchar类型字段时,前缀索引终止。
举个例子一:
下表table_001的前缀索引是user_id(8Byte) + age(4Bytes) + message(前24个Bytes),凑成的36个字节
字段 | 类型 |
---|---|
user_id | bigint |
age | int |
message | varchar(100) |
max_dwell_time | datetime |
再举个例子二:
下表的前缀索引是user_name(20 Bytes),后面没有了。
因为前缀索引遇到varchar就会终止,user_name是varchar类型,所以即使user_name只有20个Bytes的长度,也不再往后继续。
字段 | 类型 |
---|---|
user_name | varchar(20) |
age | int |
message | varchar(100) |
max_dwell_time | datetime |
索引命中
前缀索引在查询时的生效条件与mysql类似,最左匹配原则,支持范围查找(<, >, between, in等),遇到or会失效。
下面sql01能够命中前缀索引,而sql02不能命中
# sql01
select * from table_001 where user_id = 1 and age = 20 and message = 'haha' and max_dwell_time = xxx;
# sql02
select * from table_001 where age = 20 and message = 'haha' and max_dwell_time = xxx;
如果查询条件与表字段顺序不一样咋办呢?
这时可以利用rollup生成关联表,调整表字段。
文章来源:https://blog.csdn.net/cin_ie/article/details/135233490
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!