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
全部博文(176)
发布时间:2022-04-10 21:08:24
扩展GROUP BY 分组中ROLLUP,配合GROUPING_ID,组合分组解决统计需求的一个例子。......【阅读全文】
发布时间:2022-04-10 21:06:15
1.子查询结果集小,用IN
2.外表小,子查询表大,用EXISTS
这是完全错误的观点。在8i时代,这经常是正确的,但是现在已经11G了,马上12C就要面世了。其实在ORACLE 9i CBO就已经优化了IN,EXISTS的区别,ORACLE优化器有个查询转换器,很多SQL虽然写法不同,但是ORACLE优化器会根据既定规则进行查询重写,重写为优化器觉得效率最高的SQL,所以可能SQL写法不同,但是执行计划却是完全一样的。......【阅读全文】
发布时间:2020-11-04 15:27:53
显式或隐式类型转换要走INDEX FULL SCAN,必须增加NOT NULL约束或显示条件增加IS NOT NULL才能走INDEX (FAST) FULL SCAN。
否则to_char(object_id)='100'这种条件只是告诉优化器,to_char(object_id)肯定IS NOT NULL,
但是优化器不知道里面的参数object_id是否为NULL,所以不增加NOT NULL约束或不增加条件,肯定走不了INDEX FAST FULL SCAN,使用HINTS都不行
......【阅读全文】
发布时间:2020-09-30 16:32:19
1)标量子查询的计划和普通计划的执行顺序不同,标量子查询虽然在上面,但是它由下面的CUSTOMERS表结果驱动,每行驱动查询一次标量子查询。
2)标量子查询和FILTER类似,如果是它们引起的性能问题,要关注是否是执行子查询的次数过多导致查询的效率不高。
3)标量子查询和FILTER类似,它会根据输入和输出构建HASH表缓存键值对,已经查询过的键值对直接从缓存中查找,不用再次执行子查询,从而减少子查询的次数达到优化的目的,10g和11g缓存的是255个HASH BUCKETS,12C是1024个HASH BUCKETS。......【阅读全文】
发布时间:2020-08-31 16:00:09
直方图与绑定变量问题是困扰SQL性能优化的一个典型问题:一方面绑定变量是为了让执行计划共享,从而减少或避免解析,但是如果一个列分布不均,传入不同的值最佳执行计划应该不一样,比如当status=’INVALID’的时候最佳执行计划是走索引,当status=’VALID’时候最佳执行计划是要求全表扫描,遇到这种情况,必须要再次窥视传入的绑定变量值,才能走正确执行计划,因此,11G引入了Adaptive Cursor Sharing(ACS)来解决这个问题,但是因为BUG多,一般情况下生产库是建议关闭的。那么还能不能解决这个问题呢?在11.2及之后答案是肯定的。在11.2的时候,我们使用SQL PATCH来解决,这个类似SQL PROFILE。......【阅读全文】