Chat now with support
Chat with Support

SQL Optimizer for Oracle 10.0 - User Guide

Welcome to SQL Optimizer
About SQL Optimizer SQL Optimization Workflow New in This Release Additional Resources Database Privileges Database Privileges Script Connect to the Database Windows Layout Customize Toolbars Keyboard Shortcuts Support Bundle Register SQL Optimizer Check for Updates SQL Operations
ALL PARTITION ALTER INDEX AND EQUAL ANTI JOIN BITMAP AND BITMAP COMPACTION BITMAP CONSTRUCTION BITMAP CONVERSION BITMAP INDEX BITMAP JOIN INDEX UPDATE BITMAP JOIN INDEX UPDATE STATEMENT BITMAP KEY ITERATION BITMAP MERGE BITMAP MINUS BITMAP OR BUFFER SORT CARTESIAN JOIN COLLECTION ITERATOR CONCATENATION CONNECT BY CONNECT BY PUMP COUNT COUNT STOPKEY CREATE AS SELECT CUBE SCAN DDL STATEMENT DELETE DOMAIN INDEX FAST FULL INDEX SCAN FILTER FIRST ROWS FIXED INDEX FIXED TABLE FOR UPDATE FULL INDEX SCAN FULL INDEX SCAN DESCENDING FULL INDEX SCAN (MIN/MAX) HASH GROUP BY HASH GROUP BY PIVOT HASH JOIN HASH JOIN BUFFERED HASH PARTITION HASH UNIQUE INDEX INDEX BUILD NON UNIQUE INDEX RANGE SCAN INDEX RANGE SCAN DESCENDING INDEX RANGE SCAN (MIN/MAX) INDEX SAMPLE FAST FULL SCAN INDEX SKIP SCAN INDEX SKIP SCAN DESCENDING INDEX UNIQUE SCAN INLIST ITERATOR INLIST PARTITION INSERT INTERSECTION INTO INVALID PARTITION ITERATOR PARTITION LOAD AS SELECT MAT_VIEW ACCESS MAT_VIEW REWRITE ACCESS MERGE JOIN MINUS MULTI-TABLE INSERT NESTED LOOPS OUTER JOIN PARTITION PARTITION HASH EMPTY PARTITION LIST PARTITION RANGE PROJECTION PX BLOCK ITERATOR PX COORDINATOR PX ITERATOR PX PARTITION PX PARTITION HASH ALL PX PARTITION LIST ALL PX PARTITION RANGE ALL PX RECEIVE PX SEND RANGE PARTITION RECURSIVE EXECUTION RECURSIVE WITH PUMP REFERENCE MODEL REMOTE SELECT SEMI JOIN SEQUENCE SINGLE PARTITION SINGLE RANGE PARTITION SORT SORT AGGREGATE SORT GROUP BY SORT GROUP BY CUBE SORT GROUP BY NOSORT SORT GROUP BY ROLLUP SORT JOIN SORT ORDER BY SORT UNIQUE SQL MODEL TABLE ACCESS TABLE ACCESS BY GLOBAL INDEX ROWID TABLE ACCESS BY INDEX ROWID TABLE ACCESS BY LOCAL INDEX ROWID TABLE ACCESS BY ROWID TABLE ACCESS BY USER ROWID TABLE ACCESS CLUSTER TABLE ACCESS FULL TABLE ACCESS HASH TABLE ACCESS SAMPLE TABLE QUEUE TEMP TABLE GENERATION TEMP TABLE TRANSFORMATION UNION UNION ALL UNION ALL (RECURSIVE WITH) UNPIVOT UPDATE VIEW VIEW PUSHED PREDICATE WINDOW
Optimize SQL
Create Optimize SQL Sessions Open Optimizer SQL Sessions Rewrite SQL Generate Execution Plan Alternatives
Optimize Indexes Batch Optimize SQL Scan SQL Inspect SGA Analyze Impact Manage Plans Configure Options SQL Optimizer Tutorials About Us Legal Notices

UNPIVOT

 

The UNPIVOT operation retrieves data from columns and transposes the data into rows.

 

  

 

UPDATE

Execution Plan image: image\Plan_Update_Stmt.gif

The UPDATE statement modifies existing data within a database table. It has the following basic form:

UPDATE table_expression
SET [(]column_expression=value_expression
[,column_expression=value_expression&ldots;]
[)]
WHERE where_condition

table_expression

Specifies the table, partition, view, subquery, or table collection that is to have its rows updated into which rows are inserted.

column_expression

Consists of either a single column name or a list of columns enclosed in parentheses. Using a column list is convenient when setting multiple columns to the values returned by a subquery. As illustrated in the following:

UPDATE employees c
SET (manager_id,department_id)=
(SELECT manager_id,department_id
FROM departments
WHERE department_name=’BOSTON’)
WHERE employee_id=1234

where_condition

Is a standard WHERE clause. It can include subqueries.

Correlated Updates

A correlated update includes a sub-query that contains references to columns in the table being updated. The query is evaluated for each row that is eligible for update. The correlated update is very similar to the correlated sub-query described earlier. The following statement executes a correlated update: the sub-query within the SELECT statement is executed once for each row in CUSTOMERS which satisfies the WHERE clause:

UPDATE customers c
SET sales_rep_id=
(SELECT manager_id
FROM employees
WHERE surname=c.contact_surname
AND firstname=c.contact_firstname
AND date_of_birth=c.date_of_birth)
WHERE (contact_surname,contact_firstname,date_of_birth)
IN (SELECT surname,firstname,date_of_birth
FROM employees)

 

Related Topics

VIEW

Execution Plan image: image\Plan_View_Ref.gif   

Set operation.

VIEW resolves any query nested deeper than the VIEW operation into a temporary area. The use of VIEW may be caused by correlated queries or by the inability of Oracle to pull a views query into the rest of a larger query, forcing it to resolve the view separately.

The example is in two parts: a view is created and then queried. The plan that follows applies only to the query of the view, not to the view creation itself.

Example

create view COMPANY_COUNT as
select Zip, COUNT(*) Company_Count
from COMPANY
group by Zip;

select Zip, Company_Count
from COMPANY_COUNT
where Company_Count BETWEEN 10 and 20;

Execution Plan

VIEW COMPANY_COUNT
FILTER
SORT GROUP BY
TABLE ACCESS FULL COMPANY

Interpreting the Execution Plan

Because there is a set operation (SORT GROUP BY) within the view syntax, the optimizer must resolve the view before executing the conditions specified in the query. All the rows are fetched from COMPANY table using a full table scan, then they are sorted and counted by Zip during the SORT GROUP BY operation. The WHERE clause condition in the query is applied during the FILTER operation on the result of the view.

 

VIEW PUSHED PREDICATE

 

The VIEW PUSHED PREDICATE operation pushes predicates into a temporary table used for storing query results.

 

  

 

Related Documents

The document was helpful.

Select Rating

I easily found the information I needed.

Select Rating