doris基本操作,08-实战,索引

简述

目前的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生成关联表,调整表字段。

你可能感兴趣的:(数据开发,数据库,doris,数据开发)