问题标签 [materialized]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1223 浏览

sql-server - OLTP 中的索引视图?

我熟悉 SQL Server 索引视图(或 Oracle 物化视图),我们在 OLAP 应用程序中使用它们。它们具有非常酷的功能,即能够篡改执行计划并将其重新映射到索引视图而无需更改现有代码。

IE。假设我有一个非常昂贵的连接 SPROC。

SELECT [SOME COLUMNS]
FROM Table1 INNER JOIN Table2 [DETAILS]
INNER JOIN Table3 [BUNCH MORE JOINS] ...

如果我创建了一个包含类似结果集的索引视图,那么查询优化器很可能会将 SPROC 发送到我的索引视图,而不是基表,我会获得很大的性能提升。

现在说我想在OLTP 中使用索引视图!?我的意思是大多数 OLTP(比如这个站点)的阅读量相对较大,如果它们的连接成本很高,那么我们可以加快它们的速度并可能减少锁定争用(http://www.codinghorror.com/blog/archives/001166.html)。更好的是您不必更改任何代码,只需编写索引视图。

但这也意味着数据库变得更大,因为我们需要在索引视图中保留这些数据的副本......

有没有人使用过索引视图来解决 OLTP 中的争用或速度问题?我怎么从来没见过这个用的?

0 投票
3 回答
19426 浏览

oracle - ORACLE:使用 LEFT JOIN 时物化视图不起作用

我想从 2 个表的 LEFT JOIN 创建一个 MATERIALIZED VIEW。但是,以下给了我一个错误:

ORA-12054: 无法为实体化视图设置 ON COMMIT 刷新属性

但是,以下工作:

有谁知道为什么会这样。

谢谢帮助

0 投票
1 回答
22177 浏览

oracle - ORACLE:物化视图 - 更改从子句开始

我使用以下代码创建了一个物化视图:

但是,我希望能够在执行此代码后更改 START WITH 日期。我一直在查看 ALL_MVIEW_* 表,但找不到 START_DATE 的设置在哪里。

有谁知道如何更改物化视图的 START_WITH 日期?

0 投票
1 回答
4461 浏览

sql-server - 使用 cte 索引视图的选项

我有一个要为其创建索引视图的视图。经过大量的精力,我能够为视图放置 sql 查询,它看起来像这样 -

FriendBalances 视图的示例数据 -

它主要是2个表的连接。

Transactions-

表中的样本数据Transactions-

TransactionUsers-

表中的样本数据TransactionUser-

现在我无法创建视图,因为我的查询包含 cte(s)。我现在有哪些选择?

如果可以删除 cte,那么有助于创建索引视图的其他选项应该是什么。

这是错误消息 -

Msg 10137, Level 16, State 1, Line 1 Cannot create index on view "ShareBill.Test.Database.dbo.FriendBalances" because it references common table expression "trans". Views referencing common table expressions cannot be indexed. Consider not indexing the view, or removing the common table expression from the view definition.

概念: 交易主要包括:

  • 已支付的金额
  • UserId支付该金额的用户
  • 还有一些现在不重要的信息。

TransactionUsertable 是 Transaction 和 User Table 之间的映射。本质上,一笔交易可以在多人之间共享。因此,我们将其存储在此表中。

所以我们有交易,其中 1 人支付,其他人分享金额。因此,如果 A 为 B 支付 100 美元,那么 B 将欠 A 100 美元。同样,如果 B 为 A 支付 90 美元,那么 B 将只欠 A 10 美元。现在如果 A 为 A、b、c 支付 300 美元,这意味着 B 将欠 A 110 美元,C 欠 A 10 美元。

因此,在这个特定视图中,我们汇总了 2 个用户之间已支付的有效金额(如果有),从而知道一个人欠另一个人多少钱。

0 投票
1 回答
4691 浏览

sql-server - T-SQL CTE 物化技术不适用于 SQL Server 2012

我必须使用以下技术来实现我的 CTE 并提高视图性能:

现在,这两种方式都不起作用。有没有人面临同样的问题或知道在 SQL Server 2012 中这些东西是否无效?

0 投票
2 回答
2166 浏览

oracle - 在聚合连接上创建具有快速刷新的 Oracle 物化视图

我有这个非常讨厌的视图,我试图通过物化视图提前执行一些连接来加快速度。我的问题是最昂贵的连接,因此最值得预先执行,不要与物化视图很好地配合。

该应用程序的目标是尽可能提供最活跃的数据,因此如果我制作 mat 视图,它们需要在提交时快速刷新(也许我没有考虑过我不知道的其他方法)。快速刷新有限制,特别是你必须有 rowid。在这里看到这个线程;但我的问题有点不同,因为我加入的性质要求我汇总我的加入以获得正确的记录。

这是我想要“预执行”(或优化另一种天才方式)的内容:

基本上,它是一个自联接,因为0-*n*对实体进行了修改,所有这些都在同一个表的后续行中完成。我正在选择给定类型的最新版本。(对于其他类型,我会额外执行此操作)。为了使上述工作正常进行,我必须同时包含 br 和 mr 的 rowid,我无法将我的大脑包裹起来。我已经考虑过rank()ROWNUM不是聚合 w/ MAX(),但无法正确理解逻辑。

编辑:我不确定快速刷新 MV 是否适合我,即使我按需刷新并完全删除聚合(假设正好有 1 行),oracle 告诉我查询对于快速刷新来说太复杂了。所以,现在我需要其他想法......

0 投票
1 回答
183 浏览

oracle - 实体框架中的 Oracle 物化视图问题

我有以下问题。1. 我创建了一个包含“WITH PRIMARY KEY”子句的 Oracle 物化视图。2. 当我试图将该视图添加到我的 EDMX 时,我遇到以下错误:“表/视图 'XXX' 没有定义主键并且无法推断出有效的主键......”

有谁知道如何向可以添加到 EDMX 的物化视图添加主键?这个问题可以解决吗?

谢谢,哈盖

0 投票
4 回答
69203 浏览

sql - 如何查看物化视图的原始脚本?

我有兴趣将物化视图从一个数据库移动到另一个数据库,无论如何,我还需要更改其中一列。如何查看构建 MV 的原始脚本?我正在运行 TOAD,但似乎找不到原始脚本。

提前致谢!

0 投票
1 回答
3209 浏览

performance - Oracle 11g 物化视图挂起

我正在尝试使用预先构建的视图在 Oracle 中创建物化视图。

此命令将不会执行并挂起。我想这可能与未正确编写视图有关。所以我对视图执行了以下查询。

该查询执行大约需要 6 分钟,返回 270 万。这告诉我观点不是问题,但我可能是错的。

0 投票
0 回答
75 浏览

oracle - Oracle - 预建表上的 MV 与同一表上的 MV 日志

我们有一个 Oracle 11g OLTP 数据库,上面有一个相当大的表(6000 万)。我将这张表命名为 table_a。Table_a 上有一个 MV 日志 (log_a)。该表通过使用快速刷新的 MV 在预建表 table_b 上复制到只读的临时数据库。这工作得很好。

但是,我们有第三方只能访问我们的只读临时数据库。该第三方需要复制 table_b。

虽然我可以在 table_b 上创建一个 MV 日志 (log_b),但当我使用 log_a 从 table_a 刷新 table_b 时,log_b 似乎没有填充对 table_b 的更改。

有没有人曾经尝试过这个,有没有办法让 log_b 记录在 table_b 刷新期间发生的更改?