自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 ORACLE CBO 的 SQL 自动转换(Cost Based Transformations)之六

Distinct 配置最优机能(Distinct Placement)

2022-03-01 10:12:00 139

原创 ORACLE Active Data Guard 环境下 Standby 的 AWR 创建

下面通过实际操作来演示一下在 ORACLE Active Data Guard 环境下,Standby 的 AWR 取得的具体步骤。参照 Doc ID 2469650.1。首先,确认一下主库和备库的状态。■PrimarySQL> select inst_id, open_mode, database_role from gv$database order by 1; INST_ID OPEN_MODE DATABASE_ROLE---------- ------

2021-04-29 15:40:51 315

原创 SQL 执行计划的固定手段 --- Hint 方式(Nested Loop Join)

Nested Loop Join 指定时用到的 Hint和 Hash Join 相对应的,通常,利用索引时一般会用到 Nested Loop Join。下面我们来继续看看如何控制 Nested Loop Join 的使用,以及 Nested Loop Join 的顺序。LEADING Hint (指定 Nested Loop Join 顺序)USE_NL (指定使用 Nested Loop Join)依然通过例子来进行说明。准备:drop table t1 purge;drop tabl

2021-04-18 17:36:19 1402

原创 ORACLE CBO 的 SQL 自动转换(Cost Based Transformations)之五

ORACLE CBO 的 SQL 自动转换(Cost Based Transformations)之五本来关于 CBO 的 SQL 自动转换的介绍计划在上一次就想收口了,但突然间又想到了几个机能,看来还是要继续弄吧。(五)子查询关联集展开机能(unnest correlation set subquery)这个机能,我在 Google 上查了一下,分享的文章特别少,可能是很少被关注到吧。话不多说,还是马上上例子,在没用到子查询关联集展开机能之前,下面的 Case 会是什么样子。drop table

2021-04-14 11:58:30 261 5

原创 SQL 执行计划的固定手段 --- Hint 方式(Hash Join)

Hash Join 中用到的 HintHash Join 是不使用索引等价结合时,最有效的结合方式,所以,使用的机会非常之多。Hash Join 是在内存中作出 Hash Table 用来存放结合数据。通常,会先访问数据量少的表,之后再访问数据量多的表,这样能保证性能。先访问的表叫做 Build表,第二个访问的表叫做 Probe表。那么假如 3个以上的表进行 Hash Join 时,各表之间的结合顺序,以及那个表作为 Build表,那个表作为 Probe表,如何来控制呢。下面我们介绍一下相关的 Hi

2021-04-12 09:22:42 2184

原创 ORACLE CBO 的 SQL 自动转换(Cost Based Transformations)之四

ORACLE CBO 的 SQL 自动转换(Cost Based Transformations)之四之前讲过的转换是当存在 View,子查询时,把子查询展开,或者把谓词下推给子查询。那是不是说 CBO 只是盯着 View,或子查询来做工作呢,结论当然不是了。比如2张表进行结合,并对其中一个表进行了 Group by 操作时,如果能先进行 Group by 的结果集再和另外的表进行结合的话,可能会有更好的效果。于是乎,就有了Group By 配置最优机能(Group By Placement)。G

2021-03-26 15:11:27 1617 4

原创 ORACLE CBO 的 SQL 自动转换(Cost Based Transformations)之三

ORACLE CBO 的 SQL 自动转换(Cost Based Transformations)之三咱们来接下来探讨一下 View 和表结合,这时候 CBO 会如何转换用户的 SQL 呢。通常的一个 View 和表去结合,View 里没什么特殊处理的话,就直接去使用表作 JOIN 即可。drop table t1 purge;drop table t2 purge;create table t1(c1 number, c2 number not null);create table t2(c1

2021-03-25 13:54:03 1636 2

原创 ORACLE CBO 的 SQL 自动转换(Cost Based Transformations)之二

ORACLE CBO 的 SQL 自动转换(Cost Based Transformations)之二其实上一篇文章的初衷是为了捋顺一下 null aware anti-join 机能做的一个铺垫。为什么专门重点来说 Null aware(NA) 能呢,是因为工作中可能会遇到过这个机能造成的 BUG 比较多,所以,想做个单独总结。反结合的NULL识别机能(null aware anti-join )前面的文章已经说过了子查询展开机能,这个机能在有些时候是没法使用的,比如 NOT IN 子句中坑包含 N

2021-03-25 09:34:30 208

原创 ORACLE CBO 的 SQL 自动转换(Cost Based Transformations)之一

CBO 的 SQL 自动转换(Cost Based Transformations)之一有时候用户写的 SQL,对于优化器来说并不一定是最好的,可能作出的执行计划不会用到合适的结合处理。所以,CBO 会在作执行计划之前,用一堆十分难懂的机能去转换用户作的 SQL。对于这些转换机能想做一些浅显的整理总结,也希望同时学习的小伙伴们给与斧正。首先来说说相对简单一点子查询展开机能(Subquery Unnesting)。子查询展开机能(Subquery Unnesting)通常情况下,SQL 的特点是用到

2021-03-23 15:15:41 2266 7

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除