Skip to content

SQL Analysis #27

Open
Open
@gvenzl

Description

@gvenzl
SELECT s.*
FROM sales s, products p
WHERE s.prod_id = p.prod_id
      AND p.prod_category = 1
      AND p.prod_subcategory != 'abc'
UNION
SELECT s.*
FROM sales s, products p, customers c
WHERE s.prod_id = p.prod_id
      AND s.quantity_sold > 100;


-----------------------------------------------------------------
| Id  | Operation                        | Name                 |
-----------------------------------------------------------------
|   0 | SELECT STATEMENT                 |                      |
|   1 |  HASH UNIQUE                     |                      |
|   2 |   UNION-ALL                      |                      |
|*  3 |    HASH JOIN                     |                      |
|   4 |     JOIN FILTER CREATE           | :BF0000              |
|*  5 |      TABLE ACCESS FULL           | PRODUCTS             |
|   6 |     JOIN FILTER USE              | :BF0000              |
|   7 |      PARTITION RANGE ALL         |                      |
|*  8 |       TABLE ACCESS FULL          | SALES                |
|   9 |    MERGE JOIN CARTESIAN          |                      |
|  10 |     NESTED LOOPS SEMI            |                      |
|  11 |      PARTITION RANGE ALL         |                      |
|* 12 |       TABLE ACCESS FULL          | SALES                |
|* 13 |      INDEX UNIQUE SCAN           | PRODUCTS_PK          |
|  14 |     BUFFER SORT                  |                      |
|  15 |      BITMAP CONVERSION TO ROWIDS |                      |
|  16 |       BITMAP INDEX FAST FULL SCAN| CUSTOMERS_GENDER_BIX |
-----------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   3 - access("S"."PROD_ID"="P"."PROD_ID")
   5 - filter(TO_NUMBER("P"."PROD_CATEGORY")=1 AND
              "P"."PROD_SUBCATEGORY"<>'abc')
   8 - filter(SYS_OP_BLOOM_FILTER(:BF0000,"S"."PROD_ID"))
  12 - filter("S"."QUANTITY_SOLD">100)
  13 - access("S"."PROD_ID"="P"."PROD_ID")

SQL Analysis Report (identified by operation id/Query Block Name/Object Alias):
-------------------------------------------------------------------------------

   1 -  SET$1
           -  The query block contains UNION which may be expensive.
              Consider using UNION ALL if duplicates are allowed or
              uniqueness is guaranteed.

   5 -  SEL$1 / "P"@"SEL$1"
           -  The following columns have predicates which preclude their
              use as keys in index range scan. Consider rewriting the
              predicates.
                "PROD_CATEGORY"
                "PROD_SUBCATEGORY"

   9 -  SEL$2
           -  The query block has 1 cartesian product which may be
              expensive. Consider adding join conditions or removing the
              disconnected tables or views.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions