gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 13:31:19 24 4
gpt4 key购买 nike

我有多个表,我必须在其中连接、子查询、分页、分组、排序。考虑到 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com