当前位置: 首页 > news >正文

duckdb索引介绍

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.gsyq.cn/news/55620.html

相关文章:

  • 2025.11.20 B 题解
  • 重组干扰素蛋白的结构特点与分子性质综述
  • 程序员手记
  • 详细介绍:【从0开始学习Java | 第23篇】动态代理
  • 电动汽车行业时序数据库选型指南:以 TDengine 为例的四大关键维度与评估标准
  • Python在线教育广告精准投放:SEM结构方程、XGBoost、KDE核密度、聚类、因子分析、随机森林集成优化融合用户满意度渠道效能|附代码数据
  • 专题:2025年AI Agent智能体行业价值及应用分析报告:技术落地与风险治理|附140+ 份报告PDF、数据、可视化模板汇总下载
  • 深入解析:css 的 clip-path 属性,绘制气泡
  • 快速构建一个基础、现代化的 WinForm 管理系统!
  • 国内外研究现状全面解析:掌握学术前沿的必备指南
  • 费马小定理在素数检测中的应用
  • 50036_基于微信小程序的智能点餐推荐系统
  • curl/libcurl SMTP CRLF注入漏洞深度分析
  • 2025年11月氨基酸水溶肥,花芽分化氨基酸水溶肥,低温酶解氨基酸水溶肥厂家最新推荐,权威测评与种植选择指南!
  • 4.6.4版本闪亮登场~赶快了解一下新内容吧
  • XMind for Mac v24.01.dmg 安装教程(Mac思维导图软件下载安装步骤)
  • FPGA中,“按键控制LED灯实验”学习中常见问题、解除思路和措施以及经验总结!!!(新手必看)
  • fio linux
  • Docker主机网络优化咋做
  • find linux 文件
  • C语言小程序在日常生活中的应用实例
  • Docker客户端支持哪些存储驱动
  • discuz使用mysql有哪些注意事项
  • Docker存储驱动适用场景是啥
  • c语言在linux
  • dns设置linux
  • dns服务 linux
  • Docker存储驱动有何优势
  • CDate在MySQL中的使用场景有哪些
  • Cassandra数据存储如何保障安全