我将很多行放入以前几乎为空的数据库表中,然后我根据该表中的数据创建报告。尽管该表已编入索引,但查询花费的时间太长了,我猜这是因为 Hibernate 每次都对查询进行全表扫描,而不是使用索引,因为它认为数据库表只包含几行。
如何使表的 Hibernate 更新数据库统计信息,以便它可以构建合适的查询计划?
我将很多行放入以前几乎为空的数据库表中,然后我根据该表中的数据创建报告。尽管该表已编入索引,但查询花费的时间太长了,我猜这是因为 Hibernate 每次都对查询进行全表扫描,而不是使用索引,因为它认为数据库表只包含几行。
如何使表的 Hibernate 更新数据库统计信息,以便它可以构建合适的查询计划?
Hibernate 可以运行原生 SQL 语句,这样你也可以运行analyze
:
Query analyze = session.createSQLQuery("analyze");
analyze.executeUpdate();
另请参阅有关本机 SQL 语句执行的官方文档。