ToB企服应用市场:ToB评测及商务社交产业平台

标题: Doris(三) -- 索引 [打印本页]

作者: 冬雨财经    时间: 2023-5-29 09:11
标题: Doris(三) -- 索引
索引

索引用于帮助快速过滤或查找数据。
目前 Doris 主要支持两类索引:
•        内建的智能索引:包括前缀索引和 ZoneMap 索引。
•        用户创建的二级索引:包括 Bloom Filter 索引 和 Bitmap倒排索引。
其中 ZoneMap 索引是在列存格式上,对每一列自动维护的索引信息,包括 Min/Max,Null 值个数等等。这种索引对用户透明。
前缀索引

doris中,对于前缀索引有如下约束:
doris为这个表创建前缀索引时,它生成的索引键如下:
  1. user_id(8 Bytes) + age(4 Bytes) + message(prefix 24 Bytes)
复制代码
以下表中我们定义了:age,user_name,message作为表的key

那么,doris为这个表创建前缀索引时,它生成的索引键如下:
  1. age(4 Bytes) +user_name(20 Bytes)
  2. -- 虽然还没有超过36个字节,但是已经遇到了一个varchar字段,它自动截断,不会再往后面取了
复制代码
当我们的查询条件,是前缀索引的前缀时,可以极大的加快查询速度。
  1. SELECT * FROM table WHERE user_id=1829239 and age=20
  2. -- 该查询的效率会远高于以下查询:
  3. SELECT * FROM table WHERE age=20;
复制代码
Bloom Filter 索引


创建BloomFilter索引
  1. PROPERTIES (
  2. "bloom_filter_columns"="name,age,uid"
  3. )
复制代码
  1. ALTER TABLE sale_detail_bloom SET ("bloom_filter_columns" = "k1,k3");
  2. ALTER TABLE sale_detail_bloom SET ("bloom_filter_columns" = "k1,k4");
  3. ALTER TABLE sale_detail_bloom SET ("bloom_filter_columns" = "");
  4. -- 查看BloomFilter索引
  5. SHOW CREATE TABLE sale_detail_bloom \G;
  6. -- 修改/删除BloomFilter索引
  7. ALTER TABLE sale_detail_bloom SET ("bloom_filter_columns" = "customer_id,saler_id");
复制代码
Doris BloomFilter适用场景
满足以下几个条件时可以考虑对某列建立Bloom Filter 索引:
Bitmap 索引

用户可以通过创建bitmap index 加速查询

创建索引
在table1 上为siteid 创建bitmap 索引
  1. CREATE INDEX [IF NOT EXISTS] index_name ON table1 (siteid) USING BITMAP COMMENT 'balabala';
  2. create index 索引名称  on 表名(给什么字段创建bitmap索引) using bitmap COMMENT 'balabala';
  3. create index user_id_bitmap on sale_detail_bloom(sku_id) USING BITMAP COMMENT '使用user_id创建的bitmap索引';
  4. -- 查看索引
  5. SHOW INDEX FROM example_db.table_name;
  6. -- 删除索引
  7. DROP INDEX [IF EXISTS] index_name ON [db_name.]table_name;
复制代码
注意事项

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4