从Oracle 11g开始,数据库可以收集基于表达式或者一组列上的对象统计信息和直方图。
可以针对关联列或者表达式来收集扩展统计信息。
关联列是指,假设有个世界人口表,使用谓词country = 'Denmark' and language = 'Danish', 对于这张表中的大部分记录来讲,这两个限制条件很可能适用于同一批记录。事实上,说丹麦语的人大部分住在丹麦,大部分住在丹麦的人说丹麦语。也就是说,这两个约束条件几乎是冗余的,这样的列通常被叫做关联列(correlated column), 也给优化器出了难题。这是因为,没有对象统计信息或者直方图来描述数据之间的依赖关系。换句话说,查询优化器实际上假定存储在不同列上的数据是不相关的。
SELECT dbms_stats.create_extended_stats(ownname => 'H2',
tabname => 'D_ACCLIST',
extension => '(upper(BZ))')
FROM DUAL
SELECT dbms_stats.create_extended_stats(ownname => 'H2',
tabname => 'D_ACCLIST',
extension => '(RQ,BZ)')
FROM dual
QQ20131031104314.jpg
QQ20131031104350.jpg
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/8520577/viewspace-775402/
,如需转载,请注明出处,否则将追究法律责任。