解决CBO对TABLE函数基数估算导致的性能问题
你好,我是本际云服务器推荐网的小编小本本。今天为大家分享一篇关于解决CBO对TABLE函数基数估算导致的性能问题的文章。

问题分析与优化建议
TABLE函数在SQL中使用,可以将传入的集合转为普通表使用,与管道函数结合使用,往往能够提高效率,然后在实际应用过程中,发现CBO对TABLE函数的启发式基数估算,往往会导致性能问题。
如果SQL中使用了嵌套表+TABLE函数,ORACLE对TABLE函数的基数估算是固定值:返回8168行,这个值比较大,可以导致执行计划与其他表JOIN的时候可能走错,比如应该走NESTEDLOOPS的走成HASHJOIN,导致部分表无法使用索引访问。
对于在SQL中使用嵌套表和TABLE函数的,如果TABLE函数实际返回的数据量较小,比如返回200行以下,在11g之前只能使用hint:cardinality、opt_estimate,而且必须手动设置比较小的基数,比如100。11g可以使用动态采样,对table函数起作用。对应hint:dynamic
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6546.html
