我一直在阅读这篇文章,讨论位图索引的好处、权衡和潜在问题。提到:
此外,请记住位图索引仅适用于静态表和物化视图,它们在夜间更新并在批量行加载后重建。如果您的表在查询期间不是只读的,请不要考虑使用位图索引!
我们的大多数物化视图都使用快速刷新方法在夜间更新。上面的引用是否意味着应该重建 MV,或者应该重建索引?
我有一个存储 unix 时间戳的表。要将其作为日期查询,我正在尝试将此时间戳转换为视图中的日期时间类型。不幸的是,我似乎只能取出 DATE 部分。
此链接描述了如何进行转换,但需要更改nls_date_format
以包含时间部分。当前默认仅显示日期部分。我需要日期和时间。
不幸的是,该解决方案仅适用于会话级别。作为一名开发人员,我宁愿不必跑到我们的托管服务提供商那里要求他们更改数据库级别的值——尤其是因为它可能会影响其他应用程序。
有没有一种方法可以在不修改系统的情况下将 sql 中的时间戳转换为日期时间?
就像问题问的那样;是否可以通过使用虚拟分区对表进行垂直透明分区?我想如果可能的话,这些列将只存储在单独的表空间或类似的表空间中。
在我的特定环境中,我们有一个应用服务器,每 15 分钟左右批量写入大量数据。数据比我们的报告应用程序需要的多得多。主要事实表大约有 50 列。我们使用了大约 10 个。
是否有任何场景(即使虚拟垂直分区不存在),这种方案可以提高性能?我想将您的数据拆分到多个表空间(因此可能是多个磁盘)会缩短查找时间。
我目前正在为一大堆表创建物化视图日志,以支持使用 FAST REFRESH 的物化视图。我们正在创建的物化视图包含来自不同表的大约 30 列。我们的一个事实表包含大约 15 个列,这些列将在物化视图中使用。
创建 MV Log 时是否需要枚举 MV 中需要的基表中的所有列?
CREATE MATERIALIZED VIEW LOG ON SCHEMA.TABLE_A
WITH ROWID, PRIMARY KEY, SEQUENCE (COL1, COL2, COL3, ..., COL48)
INCLUDING NEW VALUES;
以上是我当前如何创建 MV 日志的示例。我承认以上是反复试验的结果,没有彻底了解语句中每个组件的工作原理(我最了解)。
在什么情况下我需要定义哪些列应该包含在 MV 日志中?
一些物化视图将只是跨多个表的连接。其他将包括聚合、分组、总和等。
我们有一个租用的数据仓库,我们正在对其进行报告。查询开始需要很长时间,我们正在寻找减少这种情况的选项。目前有两种想法。
创建租户特定的聚合表,并从中查询。
根据租户水平划分数据。
第一个选项意味着对于每一个加入的新租户,我们都需要创建一组新的表。这并不难,因为新租户注册时会提前几周通知,如果我们忘记了,就会很早就发现缺乏报告。
对我来说,对数据进行分区听起来是一种更好的方法,因为我们没有复制数据。我们不必依赖流程将新数据传输到聚合表。
如果有人以前有过类似的经历,我想知道这些选项中的哪一个会更好。对数据进行分区真的有帮助吗?或者与将所有数据放在一个“空间”中没有太大区别?
而且,在 Oracle 10g 中,如何对数据进行水平分区?如果我有下表:
TABLE Transaction(id, tenant_id, a, b, c, d)
我们将很快迁移到 Oracle 11g,因此我们将不胜感激跨版本分区的任何差异。
(注意:我尝试使用分区标签,但没有足够的代表,如果其他人可以添加一个很酷的标签)