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、总结

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

相关文章
|
6月前
|
SQL Oracle 关系型数据库
Oracle-index索引解读
Oracle-index索引解读
173 0
|
16天前
|
SQL Oracle 关系型数据库
[Oracle]索引
本文介绍了数据库索引的基本概念、优化查询的原理及分类。索引是一种数据结构(如B树或B+树),通过排序后的`rowid`来优化查询性能。文章详细解释了索引的构建过程、B+树的特点及其优势,并介绍了五种常见的索引类型:唯一索引、组合索引、反向键索引、位图索引和基于函数的索引。每种索引都有其适用场景和限制,帮助读者更好地理解和应用索引技术。
31 1
[Oracle]索引
|
20天前
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
26 7
|
20天前
|
存储 Oracle 关系型数据库
Oracle数据库优化策略
【10月更文挑战第25天】Oracle数据库优化策略
18 5
|
3月前
|
监控 Oracle 关系型数据库
"深度剖析:Oracle SGA大小调整策略——从组件解析到动态优化,打造高效数据库性能"
【8月更文挑战第9天】在Oracle数据库性能优化中,系统全局区(SGA)的大小调整至关重要。SGA作为一组共享内存区域,直接影响数据库处理能力和响应速度。本文通过问答形式介绍SGA调整策略:包括SGA的组成(如数据缓冲区、共享池等),如何根据负载与物理内存确定初始大小,手动调整SGA的方法(如使用`ALTER SYSTEM`命令),以及利用自动内存管理(AMM)特性实现智能调整。调整过程中需注意监控与测试,确保稳定性和性能。
294 2
|
5月前
|
SQL Oracle 关系型数据库
Oracle游标的使用和优化技巧
Oracle游标的使用和优化技巧
|
4月前
|
SQL Oracle 关系型数据库
Oracle游标的使用和优化技巧
Oracle游标的使用和优化技巧
|
4月前
|
SQL 存储 Oracle
Oracle数据库中游标的工作原理与优化方法
Oracle数据库中游标的工作原理与优化方法
|
6月前
|
存储 Oracle 关系型数据库
Oracle索引知识看这一篇就足够
Oracle索引知识看这一篇就足够
|
6月前
|
存储 Oracle 关系型数据库
Oracle 12c的多重索引:数据的“多维导航仪”
【4月更文挑战第19天】Oracle 12c的多重索引提升数据查询效率,如同多维导航仪。在同一表上创建针对不同列的多个索引,加速检索过程。虽然过多索引会增加存储和维护成本,但合理选择和使用索引策略,结合位图、函数索引等高级特性,能优化查询,应对复杂场景。数据管理员应善用这些工具,根据需求进行索引管理,支持企业数据分析。

推荐镜像

更多