Oracle左关联可能导致分区用不上 ╰+攻爆jí腚メ 2022-05-23 09:28 40阅读 0赞 今天有一条SQL没有使用上分区,导致了严重的性能问题,下面来模拟一下: drop table test1; drop table test2; create table test1 ( ID VARCHAR2(32), name VARCHAR2(50), BUREAU\_CODE VARCHAR2(4) ) partition by list (BUREAU\_CODE) ( partition p1 values ('0302'), partition p2 values ('0303'), partition p3 values ('0304') ); insert into test1 values(1,'a','0302'); insert into test1 values(2,'b','0302'); insert into test1 values(3,'c','0303'); insert into test1 values(4,'d','0303'); insert into test1 values(5,'e','0304'); insert into test1 values(6,'f','0304'); commit; create table test2 ( ID VARCHAR2(32), name VARCHAR2(50), BUREAU\_CODE VARCHAR2(4) ) partition by list (BUREAU\_CODE) ( partition p1 values ('0302'), partition p2 values ('0303'), partition p3 values ('0304') ); insert into test2 values(1,'a','0302'); insert into test2 values(3,'c','0303'); insert into test2 values(6,'f','0304'); commit; SQL> set autotrace trace exp SQL> select \* from test1 t1,test2 t2 where t1.id= t2.id and t1.bureau\_code = t2.bureau\_code and t1.bureau\_code='0302'; 执行计划 \---------------------------------------------------------- Plan hash value: 3614704095 \---------------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop | \---------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 98 | 7 (15)| 00:00:01 | | | |\* 1 | HASH JOIN | | 1 | 98 | 7 (15)| 00:00:01 | | | | 2 | PART JOIN FILTER CREATE| :BF0000 | 1 | 49 | 3 (0)| 00:00:01 | | | | 3 | PARTITION LIST SINGLE | | 1 | 49 | 3 (0)| 00:00:01 | 1 | 1 | | 4 | TABLE ACCESS FULL | TEST2 | 1 | 49 | 3 (0)| 00:00:01 | 1 | 1 | | 5 | PARTITION LIST SINGLE | | 2 | 98 | 3 (0)| 00:00:01 |KEY(AP)|KEY(AP)| | 6 | TABLE ACCESS FULL | TEST1 | 2 | 98 | 3 (0)| 00:00:01 | 1 | 1 | \---------------------------------------------------------------------------------------------------- Predicate Information (identified by operation id): \--------------------------------------------------- 1 - access("T1"."BUREAU\_CODE"="T2"."BUREAU\_CODE" AND "T1"."ID"="T2"."ID") **用不上分区的情况:** SQL> select \* from test1 t1,test2 t2 where t1.id= t2.id(+) and t1.bureau\_code = t2.bureau\_code(+) and t2.bureau\_code(+)='0302'; 执行计划 \---------------------------------------------------------- Plan hash value: 311524636 \------------------------------------------------------------------------------------------------ | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop | \------------------------------------------------------------------------------------------------ | 0 | SELECT STATEMENT | | 6 | 588 | 10 (10)| 00:00:01 | | | |\* 1 | HASH JOIN OUTER | | 6 | 588 | 10 (10)| 00:00:01 | | | | 2 | PARTITION LIST ALL | | 6 | 294 | 6 (0)| 00:00:01 | 1 | 3 | | 3 | TABLE ACCESS FULL | TEST1 | 6 | 294 | 6 (0)| 00:00:01 | 1 | 3 | | 4 | PARTITION LIST SINGLE| | 1 | 49 | 3 (0)| 00:00:01 | 1 | 1 | | 5 | TABLE ACCESS FULL | TEST2 | 1 | 49 | 3 (0)| 00:00:01 | 1 | 1 | \------------------------------------------------------------------------------------------------ Predicate Information (identified by operation id): \--------------------------------------------------- 1 - access("T1"."ID"="T2"."ID"(+) AND "T1"."BUREAU\_CODE"="T2"."BUREAU\_CODE"(+))
相关 Java经典异常处理不当可能导致的问题 在Java编程中,不恰当的异常处理可能会导致以下问题: 1. **程序中断**:如果不捕获或妥善处理异常,程序会突然停止,用户体验恶劣。 2. **错误信息丢失**:如果使 我就是我/ 2024年09月17日 22:21/ 0 赞/ 10 阅读
相关 Java中异常处理不当可能导致问题 在Java中,异常处理是控制程序流程以防止因意外情况导致程序崩溃的重要机制。如果异常处理不当,可能会导致以下几个问题: 1. 程序崩溃:不恰当的异常捕获和处理可能导致抛出的异 电玩女神/ 2024年09月10日 20:24/ 0 赞/ 21 阅读
相关 分区不存在导致的写入kudu出错 错误信息如下: 2022-12-22 13:34:40 java.io.IOException: Error while sending value. ゞ 浴缸里的玫瑰/ 2024年03月30日 11:24/ 0 赞/ 24 阅读
相关 MYSQL左关联查询数据 SELECT R.ID, bb.rank, bb.time FROM ( SELECT 0 AS id UNION SE 曾经终败给现在/ 2024年03月16日 09:16/ 0 赞/ 16 阅读
相关 Oracle分区表 作用:将在张大表的数据分布到多个表分区段,不同分区彼此独立,从而提高了表的可用性和性能 种类:范围分区,散列分区(使用HASH算法,最常使用),列表分区,范围/散列组合分区, 缺乏、安全感/ 2022年09月28日 13:22/ 0 赞/ 228 阅读
相关 数据库分区表关联 数据库表分区 场景: 现实业务中有两个表关系比较紧密,而且数据量比较大的时候,需要对两个表都进行分区,并能很好的发挥分表作用 创建分区数据库表 注 一时失言乱红尘/ 2022年06月12日 21:18/ 0 赞/ 142 阅读
相关 oracle分区-散列分区 1 一个大学分n个年级,将年级号码进行hash求值,年级的所有学生在一个散列分区。 原理:散列分区是根据字段的hash值进行均匀分布,尽可能的实现各分区所散列的数据相 我就是我/ 2022年06月07日 08:22/ 0 赞/ 218 阅读
相关 Oracle左关联可能导致分区用不上 今天有一条SQL没有使用上分区,导致了严重的性能问题,下面来模拟一下: drop table test1; drop table test2; create tab ╰+攻爆jí腚メ/ 2022年05月23日 09:28/ 0 赞/ 41 阅读
相关 Oracle表分区 废话少说,直接讲分区语法。 Oracle表分区分为四种:范围分区,散列分区,列表分区和复合分区。 一:范围分区 就是根据数据库表中某一字段的值的范围来划分分区 谁践踏了优雅/ 2022年04月15日 01:54/ 0 赞/ 255 阅读
还没有评论,来说两句吧...