Reader small image

You're reading from  Oracle Database 11gR2 Performance Tuning Cookbook

Product typeBook
Published inJan 2012
Reading LevelIntermediate
PublisherPackt
ISBN-139781849682602
Edition1st Edition
Languages
Right arrow
Author (1)
Ciro Fiorillo
Ciro Fiorillo
author image
Ciro Fiorillo

Ciro Fiorillo is an IT professional and consultant with experience of more than a decade in different roles (developer, analyst, DBA, project manager, data and software architect) among software industries. He has worked on different technologies and architectures, such as Oracle, SQL Server, Delphi, C# and .NET Framework, C/C++, Java, PHP, COBOL, Fortran, and Tibco. Ciro is currently employed as Lead Software and Data Architect with FinWin Srl, a software house specializing in banking and loans applications. As a freelancer he writes articles for websites and printed magazines about software and computing, participates in workshops, and teaches C++ and Fortran parallel programming with Intel Software tools. Ciro can be reached at ciro@cirofiorillo.com.
Read more about Ciro Fiorillo

Right arrow

Avoiding full table scans


In this recipe, we will see what a full table scan is, how to avoid it, and when to choose a full table scan over other methods.

How to do it...

Let's start by creating two tables from the data in the SALES table of the SH schema:

  1. Connect to the SH schema:

    CONNECT sh@TESTDB/sh
    
  2. Create the MY_SALES_ALL table:

    CREATE TABLE sh.MY_SALES_ALL AS
      SELECT ROWNUM AS ID, X.* FROM sh.SALES X;
    
  3. Create the MY_SALES_2 table:

    CREATE TABLE sh.MY_SALES_2 AS
      SELECT * FROM sh.MY_SALES_ALL NOLOGGING;
    
  4. Compute statistics on the tables we just created:

    EXEC DBMS_STATS.GATHER_TABLE_STATS('SH', 'MY_SALES_ALL',
      estimate_percent => 100,
      method_opt => 'for all columns size 1');
    EXEC DBMS_STATS.GATHER_TABLE_STATS('SH', 'MY_SALES_2',
      estimate_percent => 100,
      method_opt => 'for all columns size 1');
    
  5. Verify the database blocks used by the two tables:

    SELECT BLOCKS FROM DBA_TABLES
      WHERE TABLE_NAME IN ('MY_SALES_ALL', 'MY_SALES_2');
    
  6. Delete some rows from MY_SALES_2, resulting...

lock icon
The rest of the page is locked
Previous PageNext Page
You have been reading a chapter from
Oracle Database 11gR2 Performance Tuning Cookbook
Published in: Jan 2012Publisher: PacktISBN-13: 9781849682602

Author (1)

author image
Ciro Fiorillo

Ciro Fiorillo is an IT professional and consultant with experience of more than a decade in different roles (developer, analyst, DBA, project manager, data and software architect) among software industries. He has worked on different technologies and architectures, such as Oracle, SQL Server, Delphi, C# and .NET Framework, C/C++, Java, PHP, COBOL, Fortran, and Tibco. Ciro is currently employed as Lead Software and Data Architect with FinWin Srl, a software house specializing in banking and loans applications. As a freelancer he writes articles for websites and printed magazines about software and computing, participates in workshops, and teaches C++ and Fortran parallel programming with Intel Software tools. Ciro can be reached at ciro@cirofiorillo.com.
Read more about Ciro Fiorillo