将索引应用于 Blob/Longtext 字段

Posted

技术标签:

【中文标题】将索引应用于 Blob/Longtext 字段【英文标题】:Applying an Index to a Blob/Longtext field 【发布时间】:2011-03-07 00:49:56 【问题描述】:

我正在尝试使用 Hibernate 注释在特定文本字符串上创建索引。我目前正在做的是:

@Index(name="guid_index")
@Column(length=1400)
private String myGUID;

但是,由于列的长度为 1400,因此它使用 longtext 类型映射到 SQL。 hbm2ddl 能够毫无意外地创建表,但是当它尝试创建索引时,我得到:

Unsuccessful: create index guid_index on table_name (myguid);
BLOB/TEXT column 'myguid' used in key specification without a key length

如何使用 Hibernate 在该列上创建索引?

【问题讨论】:

【参考方案1】:

我最初认为 HHH-4389 是您要查找的内容,但您的情况似乎是一个不同的问题:Hibernate 根本没有生成预期的 DDL 语句。我会打开一个新的 Jira 问题。

【讨论】:

实际上您链接的问题正是问题所在,我认为这意味着在将属性添加到@Index 标签之前没有解决方案。谢谢!【参考方案2】:

您必须指定索引的长度。 最大长度取决于存储引擎,但通常不超过 1000 字节, 如果 charset 是 utf-8,则必须将最大长度除以 3。

在 table_name (myguid (1000) ) 上创建索引 guid_index;

对于 WHERE field LIKE 'prefix%' 和 WHERE field = 'text' 条件来说已经足够了。

【讨论】:

我如何使用 Hibernate 来做到这一点? 我们如何获得长度超过 1000 字节的索引?

以上是关于将索引应用于 Blob/Longtext 字段的主要内容,如果未能解决你的问题,请参考以下文章

如何将函数应用于日期索引的 DataFrame

无法使用 [] 将索引应用于“System.Dynamic.DynamicObject”类型的表达式

无法使用 [] 将索引应用于“对象”类型的表达式

如何将 [] 索引应用于“ISession”类型的表达式?

无法将带有 [] 的索引应用于“type”类型的表达式

将状态更改应用于 React 中数组的特定索引