首页 > 解决方案 > h2 数据库支持前缀索引吗?

问题描述

我有一个表,其中包含需要索引的 TEXT/CLOB 列:

CREATE TABLE test (id INT PRIMARY KEY, val VARCHAR(512))

但是这个索引占用了太多空间:

CREATE INDEX test_val ON test(val)

我可以创建一个只有该列前缀的索引吗?比如 MySQL 的前缀索引:

CREATE INDEX test_val ON test(val(20))

标签: indexingh2prefixdatabase-indexes

解决方案


H2 不以任何方式支持部分索引。这是相关的功能请求: https ://github.com/h2database/h2database/issues/2054

H2 支持生成列的索引,因此您可以基于原始列 ( AS SUBSTRING(ORIGINAL_COLUMN FROM 1 FOR 20)) 创建生成列并对其进行索引,但您需要在SELECT查询中指定该列的值;否则它的索引将不会被使用。


推荐阅读