Quarter's blog Quarter's blog
首页
  • Java

    • 基础概念于知识
  • 数据库

    • 高性能MySQL读后感
    • Oracle索引入门
  • JVM

    • 深入学习JVM虚拟机
  • Vue
  • leetcode打卡
  • 虚拟机集群搭建
  • 工作中的Oracle
关于
收藏
  • 分类
  • 标签
  • 归档

Quarter

无限进步
首页
  • Java

    • 基础概念于知识
  • 数据库

    • 高性能MySQL读后感
    • Oracle索引入门
  • JVM

    • 深入学习JVM虚拟机
  • Vue
  • leetcode打卡
  • 虚拟机集群搭建
  • 工作中的Oracle
关于
收藏
  • 分类
  • 标签
  • 归档
  • 工作中的Oracle问题
    • 12.2.0.1与12.1.0.2数据库版本差异
      • table()函数
      • 标识符限制30字
      • ORA-03113
    • order by 影响性能
  • Oracle 优化器与执行计划实战
  • 面试

  • 更多
Quarter
2023-03-10
目录

工作中的Oracle问题

# 12.2.0.1与12.1.0.2数据库版本差异

# table()函数

假设我有个function返回一个集合,我希望把它当做表来查询。

在12.1需要加上table()

select * from table(function(param1,param2));
1

12.2则会自动识别,省略了table函数

select * from function(param1,param2);
1

# 标识符限制30字

12.2以前的版本,标识符限制了30字符。查到资料,12.2将限制放宽到128字节,注意是字节。

--在Oracle 12.1 版本会报错
select 1 as abcdefghijklnmopqrstuvwxyzzzzzz from dual;
1
2

# ORA-03113

20230310140543

修改这两个参数 alter system set "_complex_view_merging"=false scope=both sid=''; alter system set "_OPTIMIZER_COST_BASED_TRANSFORMATION"= OFF scope=both sid='';

# order by 影响性能

工作中存在一些sql,导致查询特别慢。

原因是没有走sql。如果想要走sql,那就有两种办法

  • 在where子句中添加 order by 需要的字段
  • 在查询时,添加hint写法,强制使用索引

1、如果order by columnA,那么在where查询条件中添加条件columnA=value,则oracle内部会过滤order by排序,直接用索引(可以通过execution plan查看)。

2、如果order by columnA,columnB,那么在where查询条件中添加条件columnA=value1,columnB=value1,则oracle内部会过滤order by排序,直接用索引(可以通过execution plan查看)。

3、如果order by columnA,但是在where查询条件中没有columnA=value,那么在查询的时候添加hint *+ INDEX_FFS(columnA) */,则oracle内部会过滤order by排序,直接用索引(可以通过execution plan查看)。

上次更新: 2023/04/10, 17:41:57
Oracle 优化器与执行计划实战

Oracle 优化器与执行计划实战→

最近更新
01
训练营Day13
06-23
02
训练营Day11
06-22
03
训练营Day10
06-22
更多文章>
Theme by Vdoing | Copyright © 2023-2023 Quarter | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式