it编程 > 游戏开发 > ar

StarRocks索引详解(最新整理)

1人参与 2025-03-10 ar

1. 主键索引(primary key index)

-- 创建表时指定主键
create table user_data (
    user_id int not null,
    name string,
    gender enum('male', 'female'),
    registration_date date,
    primary key (user_id)
) engine=olap
duplicate key(user_id)
distributed by hash(user_id) buckets 100;
select * from user_data where user_id = 123;

2. 前缀索引(prefix index / shortkey index)

select * from user_table where country_code = 'cn';
-- 案例: 假设有一个手机号码列 phone_number,并且经常按区号进行查询,可以创建前缀索引:
create table users (
    ...
    phone_number varchar(20),
    index idx_phone_number (phone_number(7)) -- 前7位区号索引
);
-- 使用前缀索引案例
select * from users where phone_number like '010%';

3. bitmap 索引

create bitmap index idx_gender on example_table(gender);
select count(*) from user_data where gender = 'female';

4. bloomfilter 索引

create table users (  
    id bigint comment '用户id',  
    name string comment '用户名'  
) engine=olap  
duplicate key(id)  
comment '用户表'  
properties (  
    "bloom_filter_columns" = "id"  
);
-- 向 users 表中插入一些数据:
insert into users (id, name) values (1, 'alice');  
insert into users (id, name) values (2, 'bob');  
insert into users (id, name) values (3, 'charlie');
select * from users where id = 4;

由于我们在 id 字段上创建了布隆过滤器,starrocks 可以先检查布隆过滤器来判断 id 为 4 的记录是否可能不存在。如果布隆过滤器判断该 id 不存在,那么 starrocks 可以直接返回空结果,而无需进一步扫描表或索引。

需要注意的是,布隆过滤器只能用于减少不必要的查询操作,而不能保证查询结果的准确性。因此,即使布隆过滤器判断某个 id 可能存在,我们仍然需要扫描表或索引来确认该 id 是否真的存在。

此外,布隆过滤器的误报率取决于其配置和使用的位数组大小。在实际应用中,我们需要根据数据的特性和查询需求来合理配置布隆过滤器,以达到最佳的查询性能和准确性。

案例2:假设我们有一个名为 users 的表,其中有一个 email 字段,我们想要在这个字段上创建一个布隆过滤器:

create table users (  
    id int,  
    email varchar(255),  
    name varchar(255),  
    age int,  
    index idx_email_bloom (email) using bloom_filter comment 'bloom filter on email'  
) distributed by hash(id) buckets 10;
insert into users (id, email, name, age) values (1, 'user1@example.com', 'user one', 30);  
insert into users (id, email, name, age) values (2, 'user2@example.com', 'user two', 25);  
-- 插入更多数据...
select * from users where email like 'user%';

到此这篇关于starrocks索引详解的文章就介绍到这了,更多相关starrocks索引内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

StarRocks数据库查询加速及Colocation Join工作原理

03-10

StarRocks数据库详解(什么是StarRocks)

03-10

华为鸿蒙 HarmonyOS 5.0.3 Beta2 版本发布:附更新日志

03-10

在CentOS上解压JAR包的完整指南

03-09

高性能分析数据库StarRocks的安装与使用详解

03-07

StarRocks简介与搭建使用详解

03-07

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论