Doris---索引

news2025/1/19 14:15:37

前缀索引

doris中,对于前缀索引有如下约束:

  1. 他的索引键最大长度是36个字节

  2. 当他遇到了varchar数据类型的时候,即使没有超过36个字节,也会自动截断

  • 示例1:以下表中我们定义了: user_id,age,message作为表的key ;

ColumnNameType
user_idBIGINT
ageINT
messageVARCHAR(100)
max_dwell_timeDATETIME
min_dwell_timeDATETIME

 那么,doris为这个表创建前缀索引时,它生成的索引键如下:

user_id(8 Bytes) + age(4 Bytes) + message(prefix 24 Bytes)

  • 示例2:以下表中我们定义了:age,user_name,message作为表的key

ColumnNameType
ageINT
user_nameVARCHAR(20)
messageVARCHAR(100)
max_dwell_timeDATETIME
min_dwell_timeDATETIME

 那么,doris为这个表创建前缀索引时,它生成的索引键如下:

 age(4 Bytes) +user_name(20 Bytes) 指定key的时候

 虽然还没有超过36个字节,但是已经遇到了一个varchar字段,它自动截断,不会再往后面取了

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

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

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

SELECT * FROM table WHERE age=20;

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

 

 Bloom Filter 索引

 

 

小总结:

  1. Bloom Filter 本质上是一种位图结构,用于判断一个值是否存在

  2. 会产生小概率的误判,因为hash算法天生的碰撞

  3. 在doris中是以tablet为粒度创建的,给每一个tablet创建一个布隆过滤器索引

 创建BloomFilter索引

  • 建表的时候指定

PROPERTIES (
"bloom_filter_columns"="name,age,uid"
)
  • alter修改表的时候指定

    ALTER TABLE sale_detail_bloom SET ("bloom_filter_columns" = "k1,k3");
    
    ALTER TABLE sale_detail_bloom SET ("bloom_filter_columns" = "k1,k4");
    
    
    ALTER TABLE sale_detail_bloom SET ("bloom_filter_columns" = "");

    Doris BloomFilter适用场景

  1. BloomFilter是在无法利用前缀索引的查询场景中,来加快查询速度的。

  2. 查询会根据该列高频过滤,而且查询条件大多是 in 和 = 过滤。

  3. 不同于Bitmap, BloomFilter适用于高基数列。比如UserID。因为如果创建在低基数的列上,比如 “性别” 列,则每个Block几乎都会包含所有取值,导致BloomFilter索引失去意义。字段随机

 Doris BloomFilter使用注意事项

  1. 不支持对Tinyint、Float、Double 类型的列建Bloom Filter索引。

  2. Bloom Filter索引只对 in 和 = 过滤查询有加速效果。

  3. 可以通过explain来查看命中了哪种索引 --没办法查看

 Bitmap 索引

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

 

 创建索引

CREATE INDEX [IF NOT EXISTS] index_name ON table1 (siteid) USING BITMAP COMMENT 'balabala';

create index 索引名称  on 表名(给什么字段创建bitmap索引) using bitmap COMMENT 'balabala';

create index user_id_bitmap on sale_detail_bloom(sku_id) USING BITMAP COMMENT '使用user_id创建的bitmap索引';

 查看索引

SHOW INDEX FROM example_db.table_name;

删除索引

DROP INDEX [IF EXISTS] index_name ON [db_name.]table_name;

注意事项

  • bitmap 索引仅在单列上创建。

  • bitmap 索引能够应用在 Duplicate、Uniq 数据模型的所有列和 Aggregate模型的key列上。

  • bitmap 索引支持的数据类型如下:(老版本只支持bitmap类型)

      TINYINT,SMALLINT,INT,BIGINT,CHAR,VARCHAR,DATE,DATETIME,LARGEINT,DECIMAL,BOOL

  • bitmap索引仅在 Segment V2 下生效(Segment V2是升级版本的文件格式)。当创建 index 时,表的存储格式将默认转换为 V2 格式

 建表,并且指定索引练习

 

-- 数据
uid      name    age     gender      province         term
  1       zss    18       male       jiangsu            1
  2       lss    16       male       zhejiang           2
  3       ww     19       male       jiangsu            1
  4       zll    18       female     zhejiang           3
  5       tqq    17       female     jiangsu            2
  6       aa     18       female     jiangsu            2
  7       bb     17       male       zhejiang           3

提要求:
这张表,以后需要经常按照如下条件查询
where province = ?

where province = ? and name = ?  -- 前缀索引

where term = ?  bitmap

where name = ? bloom

--》如何去建索引呢?  用什么去创建前缀索引  province 
create table index_student(
   `province` varchar(255) comment "省份",
   `name` varchar(255) comment "名字",
    `uid` int comment "用户id",
    `age` int comment "年龄",
    `gender` varchar(255) comment "性别",
    `term` int comment "学期"
)
engine=olap
DUPLICATE KEY(`province`,`name`,`uid`,`age`)
distributed  by hash(`uid`) buckets 2
properties(
    "bloom_filter_columns"="name"
);

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

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

相关文章

【C++】“最强查找“哈希表的底层实现

哈希表的查找的时间复杂度是O(1)~ 文章目录 前言一、哈希冲突和哈希函数二、哈希表底层实现 1.开放地址法2.链地址法总结 前言 哈希概念: 顺序结构以及平衡树 中,元素关键码与其存储位置之间没有对应的关系,因此在 查…

100道护网面试题大全(附答案)

最近日入1000的护网行动已经开始摇人了, 不少大学生在后台私信我如何参加护网、面试问些什么、有没有护网内推 作为一个负责任的博主,收到大家反馈的我,连夜发动钞能力,收集整理了一套护网蓝初面试文档 1. 什么是DDoS攻击&#x…

深度学习编译器

1.为什么需要深度学习编译器 深度学习编译器主要为解决不同框架下训练的模型部署到指定的某些设备上时所遇到的一系列复杂的问题,即将各种深度学习训练框架的模型部署到各种硬件所面临的问题; 首先深度学习领域,从训练框架看,当前…

安科瑞消防设备电源监控系统选型及介绍

安科瑞 徐浩竣 江苏安科瑞电器制造有限公司 zx acrelxhj 摘要:自 2014 年《火灾自动报警系统设计规范》实施以来,由于针对消防设备电源监控系统的规定较为模糊,尚未确立详细的规定,导致当前消防设备电源监控系统的设计和建立呈…

【C++】unordered_set 和 unordered_map 使用 | 封装

文章目录 1. 使用1. unordered_set的使用2. unordered_map的使用 2. 封装修改结构定义针对insert参数 data的两种情况复用 哈希桶的insertKeyOfT模板参数的作用 迭代器operator()beginendunordered_set对于 begin和end的复用unordered_map对于 begin和end的复用unordered_map中…

计组期末复习---个人版

(一)计算机系统概论 1.1计算机分类与发展历史 分类:电子模拟计算机和电子数字计算机 电子模拟计算机:数值由连续量来表示,运算过程是连续的 电子数字计算机:按位运算,并且不是连续地跳动运算…

【JavaSE】Java基础语法(二十四):时间日期类

文章目录 1. Date类2. Date类常用方法3. SimpleDateFormat类(应用) 1. Date类 计算机中时间原点 1970年1月1日 00:00:00 时间换算单位 1秒 1000毫秒 Date类概述 Date 代表了一个特定的时间,精确到毫秒 Date类构造方法 示例代码 publi…

数据结构-顺序表

数据结构-顺序表 线性表顺序表的概念和结构静态顺序表和动态顺序表 接口的实现顺序表的初始化顺序表的打印顺序表的销毁顺序表的增容顺序表的尾插顺序表的尾删顺序表的头插顺序表的头删顺序表的任意位置插入顺序表的任意位置删除顺序表中元素的查找 完整代码 线性表 线性表是n…

数据包伪造替换、会话劫持、https劫持之探索和测试

(一)数据包替换攻击 该攻击过程如下:伪造服务器响应客户端的数据包。监听客户端的数据包,用预先伪造的数据包,伪装成服务器返回的数据发送给客户端。 因为攻击者跟目标在同一个局域网,所以攻击者发送的数…

无监督学习——k均值

文章目录 聚类k均值代码实现1. 引入依赖2. 数据加载3. 算法实现4. 测试 无监督学习重要的应用有两类:聚类、降维。 聚类: k均值 基于密度的聚类 最大期望聚类 降维: 潜语义分析(LSA) 主成分分析(PCA&a…

AcWing算法提高课-1.3.11二维费用的背包问题

宣传一下算法提高课整理 <— CSDN个人主页&#xff1a;更好的阅读体验 <— 本题链接&#xff08;AcWing&#xff09; 点这里 题目描述 有 N N N 件物品和一个容量是 V V V 的背包&#xff0c;背包能承受的最大重量是 M M M。 每件物品只能用一次。体积是 v i v_…

【C++系列P3】‘类与对象‘-三部曲——[精讲](1/3)

前言 大家好吖&#xff0c;欢迎来到 YY 滴 C系列 &#xff0c;热烈欢迎&#xff01; 【 类与对象-三部曲】的大纲主要内容如下&#xff1a; 如标题所示&#xff0c;本章是【 类与对象-三部曲】三章中的第一章节——基础知识章节&#xff0c;主要内容如下&#xff1a; 目录 一.…

apache-jmeter:点击可视化界面闪退和中文乱码Failed to write core dump

目录 1、点击界面闪退1.1、问题描述1.2、解决方法 2、处理返回结果乱码问题3、中文界面乱码3.1、问题描述3.2、解决方法 1、点击界面闪退 1.1、问题描述 Java运行环境 $ java -version java version "1.8.0_251" Java(TM) SE Runtime Environment (build 1.8.0_25…

学生成绩管理系统(C语言有结构体实现)

目录标 一、要实现的功能1.首次运行2. 成绩录入3. 显示录入的成绩4. 计算平均值5. 对平均分排序6. 查询学生成绩7. 清屏8. 显示帮助菜单9. 系统 二、实现代码&#xff08;一&#xff09;所有代码在一个文件&#xff08;v1&#xff09;&#xff08;二&#xff09;分文件编写&…

全志V3S嵌入式驱动开发(制作根文件系统)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 根文件系统是嵌入式开发很重要的一环。目前对于大多数soc来说&#xff0c;制作嵌入式系统就是配置buildroot文件。今天使用的buildroot版本是build…

一个字牛!腾讯大牛把《数据结构与算法》讲透了,带源码笔记

话不多说&#xff0c;直接先上图 经历过校招的人都知道&#xff0c;算法和数据结构都是不可避免的。 在笔试的时候&#xff0c;最主要的就是靠算法题。像拼多多、头条这种大公司&#xff0c;上来就来几道算法题&#xff0c;如果你没AC出来&#xff0c;面试机会都没有。 在面试…

上午在改BUG,下午就被通知优化了····

前段时间&#xff0c;爱奇艺被曝出大规模裁员的消息&#xff0c;裁员比例为20%-40%&#xff0c;对此&#xff0c;爱奇艺并未回应。有多位爱奇艺员工向深燃证实了裁员消息。“现在&#xff0c;空了好些工位。”一位爱奇艺员工表示。据他了解&#xff0c;仅爱奇艺文学&#xff0c…

21天学会C++:Day5----引用

CSDN的uu们&#xff0c;大家好。这里是C入门的第五讲。 座右铭&#xff1a;前路坎坷&#xff0c;披荆斩棘&#xff0c;扶摇直上。 博客主页&#xff1a; 姬如祎 收录专栏&#xff1a;C专题 目录 1. 知识引入 2. 引用的特性 2.1 引用在定义时必须初始化 2.2 一个变量可以有多…

车间静电消除不掉?静电接地桩来帮忙!

静电接地桩的原理是通过将金属导体与地面相连&#xff0c;以便在设备运行时能够稳定地将静电荷自然地释放到地面中&#xff0c;从而保护人员和设备不受到静电的危害。 在工业生产中&#xff0c;静电容易在人体和物体表面积聚&#xff0c;如果不及时地排放处理会对人员和设备造…

【算法】简单讲解如何使用两个栈实现一个队列

文章目录 什么是栈和队列&#xff1f;设计思路代码实现 什么是栈和队列&#xff1f; 栈和队列其实大家基本都知道是什么&#xff0c;或者说&#xff0c;最基本的&#xff0c;他们的特性我们是知道的。 栈是一种FILO先进后出的数据结构&#xff0c;队列是一种FIFO先进先出的数据…