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_idbigint
ageint
messagevarchar(100)
max_dwell_timedatetime

再举个例子二:
下表的前缀索引是user_name(20 Bytes),后面没有了。
因为前缀索引遇到varchar就会终止,user_name是varchar类型,所以即使user_name只有20个Bytes的长度,也不再往后继续。

字段类型
user_namevarchar(20)
ageint
messagevarchar(100)
max_dwell_timedatetime

索引命中

前缀索引在查询时的生效条件与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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。