|
|
1
7
你试过什么暗示? 你能发布快速和慢速查询计划吗? 在SQL中使用PL/SQL集合的一个常见问题是,CBO经常错误地猜测集合中的元素数量,并因此选择错误的计划。在这些情况下,使用基数提示通常是有帮助的,即。
告诉优化器在P_EXTERNAL_id中需要10个元素。 Tom Kyte对 the cardinality hint and PL/SQL collections 顺便问一下。 外部ID列的数据类型是什么?您的集合是字符串的集合,但外部ID往往意味着一个数字。这里真的有数据类型不匹配吗? 如果问题是优化器在引用集合时无法获得准确的基数估计值,但在引用临时表时可以获得准确的估计值,则将集合复制到临时表中只会有帮助。如果您正确地指定了基数提示,而这并没有改变性能,那么这就意味着问题不在优化器的基数估计上。 你能发布快速和慢速查询计划吗? 你能发布你正在使用的包含基数提示的SQL语句吗(可能有语法错误) |
|
|
2
1
我相信它正在进行一次全面扫描,因为它无法预测p_外部id是否会大于或小于盈亏平衡点。 我的意思是: 如果做一个索引查找要花费200英镑,做一个完整的表扫描要花费100000英镑,如果你要查找20个值,总花费将是4000英镑(少于100000英镑)。但如果你要查找1000个值,使用这些指数的总成本将是200000。 |
|
|
3
0
这个问题的回答非常令人满意 setting cardinality for pipelined and table functions ,所以请去看全文! 总结: 方法: 可扩展优化程序
下面的引文和例子来自文章,但有点适合于始终如一地回答这个问题。 1) 生成包装函数
2) 生成接口类型
还有尸体
3) 将函数与接口类型关联,如下所示。
4) 现在像这样使用此函数:
|
|
|
vytaute · 返回表类型时Oracle函数中的类型错误 3 年前 |
|
|
BetaRide · Oracle架构用户无法在过程中创建表 7 年前 |
|
|
F.donoso · 嵌套的隐式游标未在数据中清除 7 年前 |
|
|
ADH · 如何在网格中调用过程和输出结果 7 年前 |