oracle优化一则--不走索引

简介: 字段类型转换会造成无法使用索引的情况,如果非要进行转换,可以创建带有转换类型的索引,函数索引。

1、问题

一个查询未走索引,从一个视图中查询,视图定义为5张表的union all。
11

有明显的条件TMH12 = '1001271876'

2、排查

@?/rdbms/admin/sqltrpt 脚本生成优化建议
通过建议来看,是生成索引的建议,对列进行格式转换,TO_CHAR("TMH12"),

1- Index Finding (see explain plans section below)

The execution plan of this statement can be improved by creating one or more
indices.

Recommendation (estimated benefit: 99.48%)

  • Consider running the Access Advisor to improve the physical schema design
    or creating the recommended index.
    create index HICANO_POS.IDX

$$ _20260001 on HICANO_POS.E_CPHPDA(TO_CHAR("TMH12")); - Consider running the Access Advisor to improve the physical schema design or creating the recommended index. create index HICANO_POS.IDX $$

_20260002 on

HICANO_POS.E_CPXSDA(TO_CHAR("TMH12"));
  • Consider running the Access Advisor to improve the physical schema design
    or creating the recommended index.
    create index HICANO_POS.IDX

$$ _20260003 on HICANO_POS.E_JLZCPCPXXMXB("TMH8"); - Consider running the Access Advisor to improve the physical schema design or creating the recommended index. create index HICANO_POS.IDX $$

_20260004 on

HICANO_POS.E_CPTHDA(TO_CHAR("TMH12"));

我们先不急去创建这样的索引,先看看为什么进行了格式转换,从执行计划中也看到了filter进行了to_char转换,
22

查看表定义发现有三张表的TMH2字段是number类型的,第四张表对应的union字段是varchar类型的,
33

实际上是牺牲了3个表的字段转换,去适应一张表的varchar类型,要么从表涉及字段上统一,要么牺牲一张表去换三张表的性能。

3、调整

44

调整后由原来的30ms下降到11ms,
Elapsed: 00:00:00.30--》Elapsed: 00:00:00.10,提升2倍速度,执行计划time由25s下降到1s,cost从2049 下降到21
55
66

4、总结

字段类型转换会造成无法使用索引的情况,如果非要进行转换,可以创建带有转换类型的索引,函数索引。

相关文章
|
5月前
|
SQL Oracle 关系型数据库
Oracle-index索引解读
Oracle-index索引解读
153 0
|
2月前
|
监控 Oracle 关系型数据库
"深度剖析:Oracle SGA大小调整策略——从组件解析到动态优化,打造高效数据库性能"
【8月更文挑战第9天】在Oracle数据库性能优化中,系统全局区(SGA)的大小调整至关重要。SGA作为一组共享内存区域,直接影响数据库处理能力和响应速度。本文通过问答形式介绍SGA调整策略:包括SGA的组成(如数据缓冲区、共享池等),如何根据负载与物理内存确定初始大小,手动调整SGA的方法(如使用`ALTER SYSTEM`命令),以及利用自动内存管理(AMM)特性实现智能调整。调整过程中需注意监控与测试,确保稳定性和性能。
221 2
|
4月前
|
SQL Oracle 关系型数据库
Oracle游标的使用和优化技巧
Oracle游标的使用和优化技巧
|
3月前
|
SQL Oracle 关系型数据库
Oracle游标的使用和优化技巧
Oracle游标的使用和优化技巧
|
3月前
|
SQL 存储 Oracle
Oracle数据库中游标的工作原理与优化方法
Oracle数据库中游标的工作原理与优化方法
|
5月前
|
存储 Oracle 关系型数据库
Oracle索引知识看这一篇就足够
Oracle索引知识看这一篇就足够
|
5月前
|
存储 Oracle 关系型数据库
Oracle 12c的多重索引:数据的“多维导航仪”
【4月更文挑战第19天】Oracle 12c的多重索引提升数据查询效率,如同多维导航仪。在同一表上创建针对不同列的多个索引,加速检索过程。虽然过多索引会增加存储和维护成本,但合理选择和使用索引策略,结合位图、函数索引等高级特性,能优化查询,应对复杂场景。数据管理员应善用这些工具,根据需求进行索引管理,支持企业数据分析。
|
11月前
|
索引
Oracle-序列、索引和同义词
Oracle-序列、索引和同义词
45 0
|
5月前
|
存储 Oracle 数据管理
Oracle 12c的自动数据优化(ADO)与热图:数据管理的“瘦身”与“透视”艺术
【4月更文挑战第19天】Oracle 12c的ADO和热图技术革新数据管理。ADO智能清理无用数据,优化存储,提升查询速度,实现数据"瘦身";热图则以直观的视觉表示展示数据分布和状态,助力识别性能瓶颈,犹如数据的"透视"工具。这两项技术结合,强化数据管理,为企业业务发展保驾护航。
|
5月前
|
SQL Oracle 关系型数据库
[Oracle]索引
[Oracle]索引
104 0
[Oracle]索引

相关实验场景

更多

推荐镜像

更多