【发布时间】:2021-02-18 11:50:14
【问题描述】:
以下三个查询产生相同的数据。 请检查这些查询,让我知道您对最佳计划的反馈。 另外,我如何才能找到查询的总体最终成本?
*****************Plan: 1***************** With Parallel
Plan hash value: 5652955961
----------------------------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time | Pstart| Pstop | TQ |IN-OUT| PQ Distrib |
----------------------------------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 54279 | 1855K| | 200 (2)| 00:00:01 | | | | | |
| 1 | PX COORDINATOR | | | | | | | | | | | |
| 2 | PX SEND QC (RANDOM) | :TQ10001 | 54279 | 1855K| | 200 (2)| 00:00:01 | | | Q1,01 | P->S | QC (RAND) |
| 3 | HASH GROUP BY | | 54279 | 1855K| 2776K| 200 (2)| 00:00:01 | | | Q1,01 | PCWP | |
| 4 | PX RECEIVE | | 54279 | 1855K| | 200 (2)| 00:00:01 | | | Q1,01 | PCWP | |
| 5 | PX SEND HASH | :TQ10000 | 54279 | 1855K| | 200 (2)| 00:00:01 | | | Q1,00 | P->P | HASH |
| 6 | HASH GROUP BY | | 54279 | 1855K| 2776K| 200 (2)| 00:00:01 | | | Q1,00 | PCWP | |
| 7 | PX PARTITION HASH ALL| | 54279 | 1855K| | 199 (2)| 00:00:01 | 1 | 256 | Q1,00 | PCWC | |
|* 8 | TABLE ACCESS FULL | T_EMPLOYEE | 54279 | 1855K| | 199 (2)| 00:00:01 | 1 | 256 | Q1,00 | PCWP | |
----------------------------------------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
8 - filter("DD"."COL1"=1 AND "DD"."COL2"=1 AND "DD"."COL3"=0)
Note
-----
- Degree of Parallelism is 16 because of table property
************Plan: 2******************** normal
Plan hash value: 54134798
---------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time | Pstart| Pstop |
---------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 54279 | 1855K| | 3310 (2)| 00:00:01 | | |
| 1 | HASH GROUP BY | | 54279 | 1855K| 2776K| 3310 (2)| 00:00:01 | | |
| 2 | PARTITION HASH ALL| | 54279 | 1855K| | 2867 (2)| 00:00:01 | 1 | 256 |
|* 3 | TABLE ACCESS FULL| T_EMPLOYEE | 54279 | 1855K| | 2867 (2)| 00:00:01 | 1 | 256 |
---------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
3 - filter("DD"."COL1"=1 AND "DD"."COL2"=1 AND "DD"."COL3"=0)
************Plan: 3******************** with sub_query
Plan hash value: 883964996
-----------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time | Pstart| Pstop |
-----------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 54279 | 14M| | 3313 (2)| 00:00:01 | | |
| 1 | HASH GROUP BY | | 54279 | 14M| | 3313 (2)| 00:00:01 | | |
| 2 | VIEW | | 54279 | 14M| | 3310 (2)| 00:00:01 | | |
| 3 | HASH GROUP BY | | 54279 | 1855K| 2776K| 3310 (2)| 00:00:01 | | |
| 4 | PARTITION HASH ALL| | 54279 | 1855K| | 2867 (2)| 00:00:01 | 1 | 256 |
|* 5 | TABLE ACCESS FULL| T_EMPLOYEE | 54279 | 1855K| | 2867 (2)| 00:00:01 | 1 | 256 |
-----------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
5 - filter("DD"."COL1"=1 AND "DD"."COL2"=1 AND "DD"."COL3"=0)
【问题讨论】:
-
谓词
col1 = 1 and col2 = 1 and col3 = 0是否如此缺乏选择性以至于不值得索引?我天真地怀疑您希望在col1, col2, col3上建立一个索引并在您的查询计划中使用该索引,但我不知道您的系统。
标签: oracle query-optimization oracle12c query-performance