doris索引
假设我们要创建一个名为 orders 的表,并且我们想要定义一些列、主键、唯一键和索引。
CREATE TABLE orders ( order_id INT NOT NULL, customer_id INT NOT NULL, order_date DATE, amount DECIMAL(10, 2), status VARCHAR(50) ) UNIQUE KEY(`order_id`) -- 定义唯一键 DISTRIBUTED BY HASH(`order_id`) BUCKETS 10 -- 分布式散列,桶数为10 PROPERTIES ( "replication_num" = "3" -- 设置副本数量 );
创建索引
CREATE INDEX idx_customer_id ON orders (customer_id) USING BITMAP COMMENT 'Index for customer_id';
在 Apache Doris 中,如果不指定索引类型(即不使用 USING BITMAP),默认创建的索引类型是前缀索引(Prefix Index),也称为短键索引(Short Key Index)。这种索引是 Doris 自动维护的内建智能索引,主要用于加速等值查询和范围查询。
前缀索引的工作原理是在数据按照排序列排序存储的基础上,每隔一定行数(默认是 1024 行)创建一个稀疏的前缀索引。这个索引项包含了排序列的值,用于快速定位到数据存储的位置。前缀索引的键是基于表中定义的排序列(即建表时指定的 KEY 列)的前缀构建的,通常是排序列的前几个字节。
例如,如果你有一个表 orders,并且建表时指定了 order_id 为排序列,那么 Doris 会为 order_id 列自动创建前缀索引。这个索引会帮助加速对 order_id 的等值查询和范围查询。
在某些情况下,Doris 也支持其他类型的索引,如 ZoneMap 索引、BloomFilter 索引等,但这些通常是针对特定的查询优化场景,并且可能需要用户根据查询需求手动创建。
总结来说,如果不指定索引类型,Doris 默认会创建前缀索引,这种索引适用于加速等值查询和范围查询,特别是当查询条件与表的排序列相关时。
参考链接:
https://blog.csdn.net/a772304419/article/details/142567008
https://doris.apache.org/zh-CN/docs/table-design/best-practice/#2-%E7%B4%A2%E5%BC%95
https://www.bilibili.com/video/BV1se4y137Bf?p=37&vd_source=04d80f475277388fb106b530402116b6