我一直在做我的应用程序的性能调整。 它是基于Spring的,使用hibernate 4.2.19.Final。和数据库是DB2休眠不使用索引
在数据库中有表CUSTOMER上有许多字段。 其中2个是状态和姓氏,这2列包含在索引中。
休眠/春数据仓库生成以下声明,它不使用索引:
select * from CUSTOMER where status=? and surname=?
如果我做的任何数据库客户端工具之后,它会使用指数
select * from CUSTOMER where status='LIVE' and surname='BLAAAA'
主要区别在于,hibernate似乎在使用带有绑定参数的PreparedStatement。即。 (ps.setString(2,Constants.STATUS.SUSPENDED.name());)
我正在使用db2explain,db2top,IBM数据工作室来验证索引没有被hibernate使用。
有没有人知道解决此问题的方法? 或者我必须避免在这scenaroi中的休眠/弹簧数据,并做一个自定义查询?
我不认为Hibernate是这里的问题。 DB2将决定何时使用和索引或不使用索引这是数据库服务器的一项功能,而不是JPA的功能。 – Namphibian
一个重要的问题是 - 索引中列的顺序是什么。是的,这有所作为。如果您以其他顺序添加列的新索引,它是否被使用? –