duckdb索引介绍

news/2025/11/20 21:15:40/文章来源:https://www.cnblogs.com/zhjh256/p/19249586

duckdb支持的索引类型

duckdb支持两种索引:Min-Max Index (Zonemap)和Adaptive Radix Tree (ART)。前者所有通用数据类型(general-purpose data types,也就是常用的数据类型如varchar/integer/date等,非通用类型指的是set/list/array/json等复合类型)的字段上都包含,因为duckdb是列存,所以每个列所在的块(256kb)头中维护了本块里面当前字段的最大和最小值,以便于快速过滤(列存数据结构对应的访问sdk通常支持pushdown,访问具体内容之间先做检查,便于无用功访问。除了最大最小值,通常还包括很多其它元数据如数量、唯一值数量、空值数量等,都是为了快速过滤。为什么行存没有min-max index,因为多个字段、自然没办法维护,总不能为每个字段都维护,虽然理论上可行,但是每行通常几十甚至上百个字段,一个块内没几行记录,存一下貌似效果不大),这就是Min-Max Index (Zonemap)。ART索引主要是用于主键、唯一键的维护,当然也可以普通索引,CREATE INDEX默认创建的就是ART索引。

ART索引的限制

1、速度奇慢无比。如下1000w表的update 17分钟还没完成(这还是我没加唯一限制):

image

2、单次更新不能超过duckdb vector(和chunk一个意思,可以交换用,文档中喜欢叫vector,代码中用chunk,其实代码中也有不少vector,反正一个意思)的大小(默认2048,修改需要改源码重新编译),否则唯一索引会报Duplicate key "i: 2048" violates primary key constraint.。因为duckdb按照chunk为单位进行更新,也没有维护全局索引的概念。

3、创建art索引的时候,内存必须有足够的空间容纳整个art索引,art索引最后还是持久化到磁盘的,和b+树索引没有区别,都是value-rowid对的形式。

 

https://duckdb.org/docs/stable/sql/indexes

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

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

相关文章

25.11.20 最长不升序列LNIS和最长升序列LIS

LNIS 1.处理一个数时: 如果这个数小于等于当前序列的最后一个数,则直接接在后面,ct++ 反之,从序列头开始寻找第一个比这个数小的数并且替代他,目的:使这个序列更容易接后面的数 2.代码模板 int LNIS(vector&…

2025.11.20 B 题解

感觉其实今天 \(B\) 是最有趣的,难度估在上位紫吧。一眼数学,两眼不是数学,三眼发现可以让 \(x\) 向 \((dx+t)\bmod n\ (t\in[L,R])\) 连边,然后从每个 \(x\) 找到到根最短路径。对于每个给出的 \(x\),它所覆盖的…

重组干扰素蛋白的结构特点与分子性质综述

一、干扰素的类别与基础结构特征 干扰素(interferon,IFN)是一类具有典型结构模式的小分子蛋白,在哺乳动物中广泛表达,其最显著的特征是以折叠紧凑的 α 螺旋结构或二聚体结构实现分子稳定性。按照分子结构、序列特…

2025 门窗十大品牌权威榜单:依托行业评估报告 + 选购白皮书,省心采购指南!

本次 2025 年门窗十大品牌筛选工作,以中国建筑金属结构协会重磅发布的《2025 年度建筑门窗行业发展评估报告》为核心数据支撑,深度拆解报告中关于行业技术趋势、品牌综合竞争力、产品性能核心指标等关键内容,同时整…

实用指南:OpenCV下载安装教程(非常详细)从零基础入门到精通,看完这一篇就够了(附安装包)

实用指南:OpenCV下载安装教程(非常详细)从零基础入门到精通,看完这一篇就够了(附安装包)2025-11-20 21:08 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !impo…

详解 DPO

DPO 隐式地优化了与现有 RLHF 算法(基于 KL 散度约束的奖励最大化)相同的目标函数。然而,与传统 RLHF 方法(需要首先训练一个独立的奖励模型,然后通过强化学习来优化策略)不同,DPO 推导并提出了一种直接利用人类…

程序员手记

Linux 终端快捷键 光标移动快捷键作用crtl+a 移动到开头crtl+e 移动到结尾alt+b 向左移动一个单词alt+f 向右移动一个单词crtl+b 向左移动一个字符crtl+f 向右移动一个字符esc+b 向左移动一个单词esc+f 向右移动一个单…

Object.entries() 和 Object.formEntries()的用法详解

Object.entries() 该方法返回一个由对象自身可枚举属性的键值对组成的二维数组,每个子数组形式为 [key, value],顺序与 for...in 循环一致,但不会遍历原型链上的属性。若输入是数组,键会被转换为字符串索引(如 [0…

详细介绍:MyBatis 与 Spring Data JPA 核心对比:选型指南与最佳实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

详细介绍:【从0开始学习Java | 第23篇】动态代理

详细介绍:【从0开始学习Java | 第23篇】动态代理pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas",…

安卓中执行 root 命令

object SuShell {private const val SU_CMD = "su"fun exec(cmd: String): Result<String> {val process = Runtime.getRuntime().exec(SU_CMD)val writer = process.outputStream.bufferedWriter()wr…

UniApp缓存系统详解 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

FreeSWITCH使用mod_fail2ban模块来提升安全

FreeSWITCH使用mod_fail2ban模块来提升安全操作系统:Debian 12.5_x64 FreeSWITCH版本: 1.10.11 fail2ban版本: 1.1.0 nftables版本: 1.0.6 FreeSWITCH系统部署在公网,大概率会碰到恶意注册,今天整理下debian12环…

【ArcMap】使用拓扑(Topology)检查线是否存在断点

拓扑必须在地理数据库中创建,Shapefile无法创建拓扑。 第一步:创建要素数据集在 Catalog 窗口中,右键点击地理数据库(.gdb),没有就新建一个数据库。选择 新建(New) -> 要素数据集(Feature Dataset)。在弹…

电动汽车行业时序数据库选型指南:以 TDengine 为例的四大关键维度与评估标准

在软件定义汽车的时代,电动汽车每天产生数十GB的时序数据,包括电池电芯电压温度、电机转速、传感器读数、自动驾驶轨迹等。高效管理这些数据,直接影响车辆安全、用户体验和商业模式创新。本文结合行业最佳实践,提出…

CF2165 VP 记录

A 贪心,注意到从小到大合并,每次选择代价少的最优,因为生成的新数等于代价. 在此基础上模拟即可,可以使用链表实现. 我用的链表 + 并查集,感觉怪怪的.点击查看代码 #include<bits/stdc++.h> using namespac…

如何在SPM混编中实现不同target之间的通信?

在 SPM 混编场景中,不同 target 之间的通信核心是通过 “模块依赖 + 公开接口” 实现跨语言 / 跨模块调用—— 因为 SPM 的核心限制是 “单个 target 不能混放 Swift 与 C 系语言(OC/C、C++)”,所以拆分后的多 tar…

Python在线教育广告精准投放:SEM结构方程、XGBoost、KDE核密度、聚类、因子分析、随机森林集成优化融合用户满意度渠道效能|附代码数据

全文链接:https://tecdat.cn/?p=44299 原文出处:拓端数据部落公众号分析师:Jian Huang在数字经济纵深发展的今天,在线广告已成为在线教育行业触达用户、实现商业转化的核心载体,但行业普遍面临“流量昂贵却转化低…

完整教程:Spring Boot Actuator全解析

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …