Doris(14):索引

news2024/9/21 0:52:56

1 概念

索引用于帮助快速过滤或查找数据。

目前 Doris 主要支持两类索引:

  • 内建的智能索引,包括前缀索引和ZoneMap索引
  • 用户创建的二级索引,包括Bloom Filter索引和Bitmap倒排索引。

前缀索引:即在排序的基础上,实现的一种根据给定前缀列,快速查询数据的索引方式。

我们将一行数据的前 36 个字节 作为这行数据的前缀索引。当遇到 VARCHAR 类型时,前缀索引会直接截断。

 

2 前缀索引应用

当我们的查询条件,是前缀索引的前缀时,可以极大的加快查询速度。比如在第一个例子中,我们执行如下查询:

SELECT * FROM table WHERE user_id=1829239 and age=20;

该查询的效率会远高于如下查询:

SELECT * FROM table WHERE age=20;

所以在建表时,正确的选择列顺序,能够极大地提高查询效率。

3 匹配规则

Apache Doris的前缀索引应用于on和where,且条件表达式需要是=、<、>、<=、>=、in、between,逻辑表达式需要是and这里我们只以where进行讲解,on同理:对where中的第一个条件字段和前缀索引的第一个字段进行比较,如果相同,则匹配上,继续往下比较,如果不相同,则未匹配上,停止比较,后面的字段匹配原理和第一个字段一样。

假如对于一张表tb1,我们有如下前缀索引

Base(k1 ,k2, k3, k4, k5, k6, k7) 
rollup_index(k1 ,k2, k3) 

select * from tb1 where k2 = xxx #未匹配上
select * from tb1 where k1 = xxx and k2 < xxx and k4 = xxx, #匹配Base的k1、k2
select * from tb1 where k1 = xxx and k2 > xxx and k3 in(xxx) #匹配Base的k1、k2、k3 完全匹配
select * from tb1 where k1 = xxx and k2 <= xxx and k5 between xxx and k6 = xxx #匹配rollup_index的k1、k2
select * from tb1 where k1 = xxx and k2 >= xxx and k5 = xxx #rollup_index
select * from tb1 where k1 = xxx and k2 = xxx               #匹配Base的k1、k2
select * from tb1 where k1 = xxx and k2 = xxx and k3 = xxx and k4 not in xxx,#匹配Base的k1、k2、k3
select * from tb1 where (k1 = xxx and k2 = xxx) or k3 = xxx #未匹配上

4 ROLLUP 调整前缀索引

因为建表时已经指定了列顺序,所以一个表只有一种前缀索引。这对于使用其他不能命中前缀索引的列作为条件进行的查询来说,效率上可能无法满足需求。因此,我们可以通过创建 ROLLUP 来人为的调整列顺序。

 

可以看到,ROLLUP 和 Base 表的列完全一样,只是将 user_id 和 age 的顺序调换了。那么当我们进行如下查询时:

SELECT * FROM table where age=20 and message LIKE "%error%";

会优先选择 ROLLUP 表,因为 ROLLUP 的前缀索引匹配度更高。

 

ROLLUP 调整前缀索引

CREATE TABLE IF NOT EXISTS test_db.example_rollup_index
(
    `user_id` LARGEINT NOT NULL COMMENT "用户id",
    `age` SMALLINT COMMENT "用户年龄",
    `message`  varchar(100)   COMMENT "信息",
    `max_dwell_time` INT MAX DEFAULT "0" COMMENT "用户最大停留时间",
    `min_dwell_time` INT MIN DEFAULT "99999" COMMENT "用户最小停留时间"
)
AGGREGATE KEY(`user_id`, `age`, `message`)
DISTRIBUTED BY HASH(`user_id`) BUCKETS 10;

创建Rollup

ALTER TABLE test_db.example_rollup_index ADD ROLLUP rollup_city(age,user_id,message,max_dwell_time,min_dwell_time);

通过命令查看完成状态

SHOW ALTER TABLE ROLLUP;

查看是否命中ROLLUP

explain SELECT * FROM  test_db.example_rollup_index where age=20 and message LIKE "%error%";

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/448766.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

kv server(配置以及性能测试)

首先在 Cargo.toml 里添加 serde 和 toml。我们计划使用 toml 做配置文件&#xff0c;serde 用来处理配置的序列化和反序列化&#xff1a; [dependencies] ... serde { version "1", features ["derive"] } # 序列化/反序列化 ... toml "0.5"…

antd表格a-table滚动失效。x轴滚动失效

目录 antd表格a-table滚动失效。x轴滚动失效 页面html代码如下。实现左右布局&#xff0c;左边侧边栏固定宽度&#xff0c;右边沾满剩余宽度 解决方案&#xff1a;在计算右侧宽度时&#xff0c;左边侧边栏固定宽度&#xff0c;右边沾满剩余宽度 情况1&#xff1a;左侧侧边栏…

第八章 查询和检索:Query DSL

版权声明 本文为Elastic开源社区版权所有,保证独立性和原创性,未获得授权和允许,任何组织和个人不得以任何方式传播或复制或分享。否则必将追究法律责任。 知识内容输出不易,请尊重他人劳动成果。严禁随意传播、复制和盗用他人成果或文章内容用以商业或盈利目的! 1、查询…

5.4 龙贝格算法

为什么有龙贝格算法&#xff1a; 龙贝格算法是一种数值积分方法&#xff0c;用于计算定积分的数值近似值。它是基于复合梯形法和复合辛普森法的推广和拓展&#xff0c;可以达到更高的精度。相较于复合梯形法和复合辛普森法&#xff0c;龙贝格算法的收敛速度更快&#xff0c;且…

nerfstudio介绍及在windows上的配置、使用

nerfstudio提供了一个简单的API&#xff0c;可以简化创建、训练和可视化NeRF的端到端过程。该库通过模块化每个组件来支持可解释的NeRF实现。nerfstudio源码地址: https://github.com/nerfstudio-project/nerfstudio , 通过模块化集成了多个NeRF扩展的实现&#xff0c;持续更新…

JUC-多线程(12. AQS)学习笔记

文章目录 1. 可重入锁1.1. 概述1.2. 可重入锁类型1.3. Synchronized 可重入实现机理 2. LockSupport2.1. LockSupport 是什么2.2. 3种线程等待唤醒的方法2.2.1 Object 的等待与唤醒2.2.2. Condition接口中的等待与唤醒2.2.3. 传统的 synchronized 和 Lock 实现等待唤醒通知的约…

C/C++开发,opencv读写图像与视频

目录 一、opencv的图像缓存表达&#xff08;cv::mat&#xff09; 二、图片读写 2.1 图片读写API 2.2 图片读写案例 2.3 案例编译与测试 三、opencv的视频读写&#xff1a; 3.1 视频读写接口 3.2 视频读写案例 3.3 编译与测试 一、opencv的图像缓存表达&#xff08;cv::mat&am…

2023网络搭建项目改革

好久没更新了&#xff0c;哈哈哈&#xff0c;也废话不多说&#xff0c;直接进入正题。 3月的时候就有人吓我说什么网搭取消了&#xff0c;当时我还觉得高兴&#xff0c;主要是不喜欢这个行业&#xff0c;要是没了我就可以跑路了&#xff0c;哈哈&#xff0c;然后我就觉得很奇怪…

【嵌入式系统与入门】Day02 Arduino 按键、蜂鸣器与湿温度传感器

文章目录 1. 按键控制1.1 认识按键1.2 工作原理1.3 Arduino代码展示1.4 原理图1.5 实现去抖【消抖动延时】 2. 蜂鸣器控制2.1 认识蜂鸣器2.2 分类2.3 工作原理2.4 连线2.5 Arduino代码展示 3. PWM模拟量输出3.2 Arduino代码展示 4. 湿温度测量4.1 认识器件4.2 传感器接口4.3 Ar…

CMU-自主探索导航系统(TARE FAR Planner)学习-All in one

参考引用 Autonomous Exploration Development EnvironmentTARE机器人自主导航系统社区-CSDN社区云TARE机器人自主导航系统公开课1TARE机器人自主导航系统公开课2CMU团队开发的全套开源自主导航算法FAR Planner —— IROS2022 最佳学生论文&#xff1c;论文阅读&#xff1e;TAR…

【源码分析】XXL-JOB的执行器的注册流程

目的&#xff1a;分析xxl-job执行器的注册过程 流程&#xff1a; 获取执行器中所有被注解(xxlJjob)修饰的handler执行器注册过程执行器中任务执行过程 版本&#xff1a;xxl-job 2.3.1 建议&#xff1a;下载xxl-job源码&#xff0c;按流程图debug调试&#xff0c;看堆栈信息…

【ONE·C++ || stack queue (一)】

总言 主要介绍栈和队列的基本函数使用&#xff1a;栈和队列、优先级队列、适配器、反向迭代器。 文章目录 总言1、栈和队列接口基本介绍1.1、基本介绍1.2、相关例题1.2.1、最小栈1.2.2、栈的压入、弹出序列1.2.3、逆波兰表达式求值 2、适配器介绍2.1、引入&#xff1a;如何实现…

儿童用灯哪个品牌好?分享五款儿童护眼台灯品牌

家中有小朋友上了幼儿园就已经戴上了眼镜&#xff0c;太让人心疼了 近视已经成为世界难题&#xff0c;而我国儿童近视形式尤为严峻 据官方数据显示&#xff0c;我国儿童青少年总体近视率竟高达52.7% 如何保护孩子眼睛&#xff0c;儿童用灯哪个品牌好&#xff1f; 那今天&am…

Open vSwitch 入门实践(8) VXLAN实验

目录 什么是VXLAN&#xff1f; VXLAN解决了什么问题&#xff1f; VXLAN网络如何工作&#xff1f; 简单VXLAN实验 主机A 主机B 测试 什么是VXLAN&#xff1f; VXLAN&#xff08;Virtual eXtensible Local Area Network&#xff0c;虚拟扩展局域网&#xff09;&#xff0…

Spring依赖注入 - Resource注解详解及与Autowired注解区别

上篇博客我们讲了Spring中的自动注入(byName,byType)和Autowired注解的工作原理以及源码分析&#xff0c;那么这次&#xff0c;我们来分析还没讲完的&#xff0c;剩下的核心的方法&#xff1a; Nullable Object resolveDependency(DependencyDescriptor descriptor, Nullable …

0.96寸OLED液晶显示器

在日常的小项目制作中我们经常会接触到OLED液晶显示器&#xff0c;本文介绍0.96寸液晶显示器的基本原理&#xff0c;辅助我们后续的小项目开发 OLED被称为有机激光二极管&#xff0c;也被称为有机激光显示&#xff0c;OLED采用有机材料涂层和玻璃基板&#xff0c;当有电流通过…

#Chrome扩展程序开发教程--02:Hello Extensions

#Chrome扩展程序开发教程--02&#xff1a;Hello Extensions 引言1、Hello Extensions2、固定扩展程序3、重新加载扩展程序4、查看扩展程序的输出 引言 本系列博客旨在带来最新的Chrome扩展程序开发入门教程。 1、Hello Extensions 本节博客中&#xff0c;笔者将带领读者创建一个…

C++附加篇: 空间适配器

"我有时难过&#xff0c;却还有些抚慰和感动。" 一、我们来谈谈空间适配器 (1) 什么是空间配置器? STL的六大组件&#xff0c;容器、算法、迭代器、适配器、仿函数&#xff0c;最后一个也就是"空间适配器"。 所谓"空间适配器"&#x…

轻松掌握K8S使用kubectl操作配置文件挂载ConfigMap和密钥Secret知识点05

1、挂载应用配置文件配置集ConfigMap 当有许多应用如redis、mysql&#xff0c;希望将它的配置文件挂载出去&#xff0c;以便随时修改&#xff0c;可以用ConfigMap配置集 具体用法查看使用命令行操作里的 3、ConfigMap配置集实战 2、挂载应用配置文件的敏感信息Secret Secre…

JAVA开发运维(云基础设备监控)

在大型的商用系统中&#xff0c;经常需要监控云设备的健康状态&#xff0c;性能情况&#xff0c;流量数据等。及时发现系统问题&#xff0c;及时修复&#xff0c;以确保系统的高可用。检查云资源的工作内容主要包括基础监控、主动拨测、用户体验、APM监控、指标体系、业务分析、…