|
|
1
4
一 materialized view 如果满足严格的物化视图条件,将允许您索引值。 |
|
|
2
7
Oracle可以使用这两个索引。你只是没有 正确的 两个指标。
考虑:如果查询计划在
所以它去
varchars上的索引总是有问题的,Oracle更喜欢全表扫描。但是如果我们给Oracle一个包含列的索引, 欲望 要使用,根据表的总行数和统计信息,我们可以让它使用它。这是索引:
这适用于
相反,如果基于成本的分析器确定去表更便宜
注意,在这种情况下,我
同样,关键是:在创建索引时,不仅要考虑
更新
JTHG:是的,它总是取决于数据的分布方式。以及表中有多少行:如果非常多,Oracle将执行表扫描和哈希联接,如果非常少,则执行表扫描。您可以颠倒这两个索引的顺序。通过将发送日期放在第二个索引的第一位,我们消除了对索引的大部分需求
|
|
|
3
0
哪个标准更具选择性?日期范围还是收件人?我猜是收件人。如果这是高度选择性的,那么不需要考虑日期索引,只需要让数据库根据找到的邮件ID进行搜索。但索引表
另一方面,一些现代的优化器甚至会同时使用这两个索引,扫描两个表,然后构建连接列的哈希值来合并两个表的结果。我不确定Oracle是否以及何时会选择这种策略。我刚刚意识到,与其他引擎相比,SQL Server更倾向于进行哈希连接。 |
|
|
4
0
如果您的查询通常是针对特定月份的,那么您可以 partition 每月的数据。 |
|
|
5
0
在具体化视图不满足要求的情况下,有以下两种选择: 1)您可以创建一个交叉引用表,并使用触发器更新它。 这些概念与Oracle相同,但目前我只安装了SQL Server来运行测试,请参阅以下设置:
然后您可以使用
这有一个优点,即可以进行实时的事务更新。 2)如果不需要触发器的性能/管理开销,而只需要在第二天报告时使用,则可以创建一个视图和一个夜间进程,该进程将截断表并将整个视图选择为物化表。 我已经成功地使用它索引了需要跨十几个表连接的扁平关系数据。将报告时间从几小时缩短到几秒。虽然这是一个昂贵的查询,但是如果您有减少使用的时间段,您可以将作业设置为非工作时间。 |
|
|
maddy · 如何根据oracle SQL中的某一列值进行排名 3 年前 |
|
|
kiric8494 · 显示以元音开头和结尾的城市名称 4 年前 |
|
|
Franz Biberkopf · Oracle:组合子查询和聚合函数 4 年前 |
|
|
BitLauncher · 甲骨文-如何模拟位列和布尔和/或? 4 年前 |
|
|
Arifullah · 如何从oracle中的列中删除特定的初始字符? 4 年前 |
|
|
Anar · Oracle SQL用户定义函数 4 年前 |
|
|
user1312312 · 如何为一组表编写通用触发器? 4 年前 |