将索引应用于 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 字段的主要内容,如果未能解决你的问题,请参考以下文章