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

posted @ 2024-10-15 17:03  所向披靡zz  阅读(115)  评论(0编辑  收藏  举报