|
|
1
13
.
在
a中的数据
这意味着
存在
索引的变化将影响您的进程以及使用该表的其他进程,因为任何修改表中数据的进程
数据 相反,表(以及索引)中包含的内容只会影响创建它们的进程,甚至对其他进程都不可见。 如果您希望一个进程使用索引,而另一个进程不使用索引,请执行以下操作:
|
|
|
2
9
我假设您指的是真正的Oracle临时表,而不仅仅是临时创建然后删除的常规表。是的,在临时表上创建索引是安全的,它们将根据与常规表和索引相同的规则使用。 [编辑] 我看到你已经完善了你的问题,这里有一个稍微完善的答案: 发件人:
“可以在临时表上创建索引。它们也是临时的 索引中的数据与基础表中的数据具有相同的会话或事务范围 ."
|
|
|
3
6
你问的是两个不同的问题,索引和统计。 对于索引,是的,您可以在临时表上创建索引,它们将照常维护。 对于统计数据,我建议您显式设置表的统计数据,以表示查询时表的平均大小。如果你只是让oracle自己收集统计数据,统计过程不会在表中找到任何东西(因为根据定义,表中的数据是事务的本地数据),因此它会返回不准确的结果。 例如,您可以执行以下操作:
另一个提示是,如果临时表的大小变化很大,并且在您的事务中,您知道临时表中有多少行,您可以通过向优化器提供这些信息来帮助它。我发现如果你从临时表加入到常规表,这会有很大帮助。 例如,如果你知道临时表中有大约100行,你可以:
|
|
|
4
2
好吧,我试过了,索引是可见的,并在第二次会话中使用。如果你真的需要索引,为你的数据创建一个新的全局临时表会更安全。 当任何其他会话正在访问表时,您也无法创建索引。 这是我运行的测试用例:
|
|
|
5
1
|
|
6
0
当临时表被另一个会话使用时,您无法在临时表上创建索引,所以答案是:不,它不能影响任何其他进程,因为这是不可能的。 现有索引仅影响当前会话,因为对于任何其他会话,临时表都显示为空,因此它无法访问任何索引值。 第1节:
会话2(会话1仍处于连接状态时):
第2节:
仍然失败,您首先必须断开会话1,否则表必须被截断。 第1节:
现在,您可以在会话2中创建索引:
当然,任何会话都将使用此索引。 |
|
|
maddy · 如何根据oracle SQL中的某一列值进行排名 3 年前 |
|
|
kiric8494 · 显示以元音开头和结尾的城市名称 4 年前 |
|
|
Franz Biberkopf · Oracle:组合子查询和聚合函数 4 年前 |
|
|
BitLauncher · 甲骨文-如何模拟位列和布尔和/或? 4 年前 |
|
|
Arifullah · 如何从oracle中的列中删除特定的初始字符? 4 年前 |
|
|
Anar · Oracle SQL用户定义函数 4 年前 |
|
|
user1312312 · 如何为一组表编写通用触发器? 4 年前 |