mysql - 从 Hibernate/MySQL 获取数据性能

标签 mysql hibernate

我有多个表,我必须在其中连接、子查询、分页、分组、排序。考虑到 hibernate 的限制,有时需要 native SQL,而此时 hibernate 缓存是无能为力的。此外,数据存储在hibernate二级缓存中并不是自动的,因为它仅在访问数据库时才存储。所以第一次二级缓存是空的。

我的问题是我使用原生sql来获取具有多个连接和分组、排序的数据,最终导致性能问题。

我的想法:我喜欢 sql VIEW 通过所有这些连接、排序、分组来提取数据。但 sql VIEW 就像普通的 select 语句一样,每次访问时都会执行。是否有任何实时结果集作为表,我可以在其中以select * from ONE_LIVE_RESULT_SET where条件的方式获取数据。 sql世界中有没有像LIVE_RESULT_SET这样的概念?有任何意见。

最佳答案

使用物化 View

摘自维基百科:http://en.wikipedia.org/wiki/Materialized_view

A materialized view is a database object that contains the results of a query. For example, it may be a local copy of data located remotely, or may be a subset of the rows and/or columns of a table or join result, or may be a summary based on aggregations of a table's data. Materialized views, which store data based on remote tables, are also known as snapshots. A snapshot can be redefined as a materialized view.

在 Oracle 中创建物化 View 的示例语法:

CREATE MATERIALIZED VIEW MV_MY_VIEW REFRESH FAST START WITH SYSDATE
NEXT SYSDATE + 1 AS SELECT * FROM ;

问候

关于mysql - 从 Hibernate/MySQL 获取数据性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19426331/

相关文章:

mysql - 唯一的一个共享主键JPA关系

hibernate - 如何在不将扩展类映射到数据库的情况下扩展grails域类?

java - 在 JPA 中使用连接池

java - hibernate session 错误

mysql - 使用 Ruby/Rails 检索 MySQL BLOB 字段

php - 如何解决 magento 中的 'Resource is not set' 错误?

java - Hibernate 中的 Order 和 OrderLine 关系映射。在哪里放置 @OnetoMany 和/或 @ManytoOne

java - 为什么 JPA/Hibernate 事务处于 Activity 状态,即使我没有显式启动事务

PHP 从 MySQL 获取太多连接错误

php - 获取每个记录组的最后一条记录