indexing - 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))
解决方案
H2 不以任何方式支持部分索引。这是相关的功能请求: https ://github.com/h2database/h2database/issues/2054
H2 支持生成列的索引,因此您可以基于原始列 ( AS SUBSTRING(ORIGINAL_COLUMN FROM 1 FOR 20)
) 创建生成列并对其进行索引,但您需要在SELECT
查询中指定该列的值;否则它的索引将不会被使用。
推荐阅读
- python - 如何为 Pytorch 模型提供复杂的输入和复杂的权重?
- flutter - 如何在颤动中正确地渲染表情符号?
- spring-boot - 如何在 spring-data-elasticsearch 中创建索引后更新索引设置
- c# - Guid[]:如何从 Cosmos DB 中查询和获取详细信息?
- questdb - 如何查询已导入的 CSV 数据集?
- kotlin - 如何释放由 Cleaner 管理的资源的所有权?
- javascript - 事件处理程序未委托给父元素
- flutter - 尝试在 BottomAppBar 中嵌入 TextField 或 TextFormField
- php - PHP调用数组中的索引位置
- openlayers - 在 openlayers 的共享视图中使用同一层