About me:Oracle ACE pro,optimistic,passionate and harmonious. Focus on ORACLE,MySQL and other database programming,peformance tuning,db design, j2ee,Linux/AIX,Architecture tech,etc
全部博文(182)
发布时间:2025-04-06 21:14:51
1.排序键,排序要消除,才能limit裁剪,如果排序键在访问条件里更好,索引支持desc访问,如果前导列是等值,不用建desc索引
如果order by里没有前导列,要消除排序,排序列必须紧跟在等值访问条件索引后面,或者作为前导列,支持desc扫描,不用建desc索引
如果order by里有前导列,要消除排序,按order by顺序建组合索引即可,但是如果前导列非等值,则后面列如果desc,只能建desc索引
2.等值访问条件最好为前导列,就算选择性不好,也可以减少索引访问的行
3.遵循leftmost prefix规则,不能index访问的条件放到组合索引最后,可以起到index filter减少回表的作用
......【阅读全文】
发布时间:2025-04-06 21:37:39
oracle分页的三种写法及其下推裁剪优化
1) 从12c开始,分页有新的fetch,offset的语法,可以和order by写一起,内部使用row_number/rank分析函数实现,with ties用rank实现
2) row_number分析函数从oracle 11g后就做了优化,可以类似普通分页写法那样,满足条件可以下推裁剪,减少数据访问量
rank分析函数可以下推
注意:dense_rank不能走索引下推优化
3)传统rownum写法裁剪优化
?......【阅读全文】
发布时间:2025-04-06 21:05:42
如果动态采样,且peeking关闭,则不管列的数据分布,会按照默认选择率计算,很容易走错索引,
需要收集统计信息。
在Oracle数据库中,优化器计算等值条件选择率时,
通常优先使用DBA_TAB_COL_STATISTICS.NUM_DISTINCT(列的统计信息)......【阅读全文】