【问题标题】:Hibernate indexing for like expression类似表达式的休眠索引
【发布时间】:2013-10-30 08:37:53
【问题描述】:
我正在使用 Hibernate 3.3.1 和 PostgreSQL 9.2.2 服务器。我的应用程序的表格
由休眠自动生成,现在我想做一个优化
表格中经常使用的“like”表达式,看起来是这样的:
“像 'RootFolder_FirstSubfolder%' 这样的路径”
默认情况下,hibernate 只为我通过注释定义的“id”列创建索引。
有什么建议可以让我使用更多索引来加速我的“喜欢”表达吗?
非常感谢您提前帮助我
亲切的问候
香农
【问题讨论】:
标签:
postgresql
hibernate
indexing
sql-like
【解决方案1】:
Hibernate 可以使用Index 注解自动创建附加索引:
@org.hibernate.annotations.Index(name = "IDX_PATH")
private String path;
但这无济于事,因为创建的索引不适合 like 子句。
阅读最受好评的答案here 以获得更好的解决方案。不幸的是,它需要自定义 sql 和 AFAIK,没有简单的方法将自定义 sql 集成到 hibernate 模式更新工具生成的脚本中。
作为休眠自动更新的替代方法:您可以使用liquibase 之类的工具来管理架构更新。它需要更多设置,但它可以让您完全控制架构更新脚本。