On May 17, 1:28 pm, gayathri Dev <gd0...@gmail.com> wrote:
> Hi All,
>
> I have a question on performance..
>
> After adding a CLOB column to the existing table, "select * from table" is
> taking a while to retrieve.
> But the cost in the Explain plan looks same.
>
> Is there a way to make the retrieve faster by adding any index on the CLOB
> column? Please suggest
>
> Thanks in advance!
> G

No, since you cannot create an index on columns or attributes whose
type is user-defined, LONG, LONG RAW, LOB, or REF.  Besides when you
added the CLOB column an index was generated automatically.  Simply
adding a CLOB column doesn't dramatically change the retrieval time
from what I see in this example:

SQL> create table mytest(
  2          myid number,
  3          myval varchar2(20),
  4          mydt date);

Table created.

Elapsed: 00:00:00.00
SQL>
SQL> begin
  2          for i in 1..1000 loop
  3                  insert into mytest
  4                  values(i, 'Test data '||i, sysdate + mod(i,7));
  5          end loop;
  6
  7          commit;
  8
  9  end;
 10  /

PL/SQL procedure successfully completed.

Elapsed: 00:00:00.03
SQL>
SQL> set autotrace on timing on trimspool on
SQL>
SQL> select * From mytest;

      MYID MYVAL                MYDT
---------- -------------------- ---------
         1 Test data 1          18-MAY-11
         2 Test data 2          19-MAY-11
         3 Test data 3          20-MAY-11
         4 Test data 4          21-MAY-11
         5 Test data 5          22-MAY-11
         6 Test data 6          23-MAY-11
         7 Test data 7          17-MAY-11
         8 Test data 8          18-MAY-11
         9 Test data 9          19-MAY-11
        10 Test data 10         20-MAY-11
        11 Test data 11         21-MAY-11
...
       705 Test data 705        22-MAY-11
       706 Test data 706        23-MAY-11
       707 Test data 707        17-MAY-11
       708 Test data 708        18-MAY-11
       709 Test data 709        19-MAY-11

1000 rows selected.

Elapsed: 00:00:00.30

Execution Plan
----------------------------------------------------------
Plan hash value: 1692938441

----------------------------------------------------------------------------
| Id  | Operation         | Name   | Rows  | Bytes | Cost (%CPU)|
Time     |
----------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |        |  1000 | 34000 |     3   (0)|
00:00:01 |
|   1 |  TABLE ACCESS FULL| MYTEST |  1000 | 34000 |     3   (0)|
00:00:01 |
----------------------------------------------------------------------------

Note
-----
   - dynamic sampling used for this statement


Statistics
----------------------------------------------------------
         68  recursive calls
          0  db block gets
         86  consistent gets
          0  physical reads
          0  redo size
      35967  bytes sent via SQL*Net to client
       1111  bytes received via SQL*Net from client
         68  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
       1000  rows processed

SQL>
SQL> set autotrace off timing off
SQL>
SQL> select index_name from user_indexes;

no rows selected

SQL>
SQL> alter table mytest add myclob clob lob(myclob) store as
(tablespace users chunk 4000);

Table altered.

SQL>
SQL> select index_name, index_type from user_indexes;

INDEX_NAME                     INDEX_TYPE
------------------------------ ---------------------------
SYS_IL0000016854C00004$$       LOB

SQL>
SQL> update mytest set myclob = rpad(myval, 20000, '*');

1000 rows updated.

SQL>
SQL> commit;

Commit complete.

SQL>
SQL> set autotrace on timing on
SQL>
SQL> select * From mytest;

      MYID MYVAL                MYDT      MYCLOB
---------- -------------------- ---------
--------------------------------------------------------------------------------
         1 Test data 1          18-MAY-11 Test data
1*********************************************************************
         2 Test data 2          19-MAY-11 Test data
2*********************************************************************
         3 Test data 3          20-MAY-11 Test data
3*********************************************************************
         4 Test data 4          21-MAY-11 Test data
4*********************************************************************
         5 Test data 5          22-MAY-11 Test data
5*********************************************************************
         6 Test data 6          23-MAY-11 Test data
6*********************************************************************
         7 Test data 7          17-MAY-11 Test data
7*********************************************************************
         8 Test data 8          18-MAY-11 Test data
8*********************************************************************
         9 Test data 9          19-MAY-11 Test data
9*********************************************************************
        10 Test data 10         20-MAY-11 Test data
10********************************************************************
        11 Test data 11         21-MAY-11 Test data
11********************************************************************
...
       786 Test data 786        19-MAY-11 Test data
786*******************************************************************
       787 Test data 787        20-MAY-11 Test data
787*******************************************************************
       789 Test data 789        22-MAY-11 Test data
789*******************************************************************
       790 Test data 790        23-MAY-11 Test data
790*******************************************************************
       792 Test data 792        18-MAY-11 Test data
792*******************************************************************

1000 rows selected.

Elapsed: 00:00:01.50

Execution Plan
----------------------------------------------------------
Plan hash value: 1692938441

----------------------------------------------------------------------------
| Id  | Operation         | Name   | Rows  | Bytes | Cost (%CPU)|
Time     |
----------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |        |  1000 |  1988K|     5   (0)|
00:00:01 |
|   1 |  TABLE ACCESS FULL| MYTEST |  1000 |  1988K|     5   (0)|
00:00:01 |
----------------------------------------------------------------------------

Note
-----
   - dynamic sampling used for this statement


Statistics
----------------------------------------------------------
          6  recursive calls
          0  db block gets
       3022  consistent gets
       2000  physical reads
          0  redo size
     643319  bytes sent via SQL*Net to client
     224385  bytes received via SQL*Net from client
       2002  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
       1000  rows processed

SQL>
SQL> set autotrace off timing off
SQL>
SQL> drop table mytest purge;

Table dropped.

SQL>
SQL> create table mytest(
  2          myid number,
  3          myval varchar2(20),
  4          mydt date);

Table created.

SQL>
SQL> begin
  2          for i in 1..1000 loop
  3                  insert into mytest
  4                  values(i, 'Test data '||i, sysdate + mod(i,7));
  5          end loop;
  6
  7          commit;
  8
  9  end;
 10  /

PL/SQL procedure successfully completed.

SQL>
SQL> select index_name, index_type from user_indexes;

no rows selected

SQL>
SQL> alter table mytest add myclob clob;

Table altered.

SQL>
SQL> select index_name from user_indexes;

INDEX_NAME
------------------------------
SYS_IL0000016857C00004$$

SQL>
SQL> update mytest set myclob = rpad(myval, 20000, '*');

1000 rows updated.

SQL>
SQL> commit;

Commit complete.

SQL>
SQL> set autotrace on timing on
SQL>
SQL> select * From mytest;

      MYID MYVAL                MYDT      MYCLOB
---------- -------------------- ---------
--------------------------------------------------------------------------------
         1 Test data 1          18-MAY-11 Test data
1*********************************************************************
         2 Test data 2          19-MAY-11 Test data
2*********************************************************************
         3 Test data 3          20-MAY-11 Test data
3*********************************************************************
         4 Test data 4          21-MAY-11 Test data
4*********************************************************************
         5 Test data 5          22-MAY-11 Test data
5*********************************************************************
         6 Test data 6          23-MAY-11 Test data
6*********************************************************************
         7 Test data 7          17-MAY-11 Test data
7*********************************************************************
         8 Test data 8          18-MAY-11 Test data
8*********************************************************************
         9 Test data 9          19-MAY-11 Test data
9*********************************************************************
        10 Test data 10         20-MAY-11 Test data
10********************************************************************
        11 Test data 11         21-MAY-11 Test data
11********************************************************************
...
       786 Test data 786        19-MAY-11 Test data
786*******************************************************************
       787 Test data 787        20-MAY-11 Test data
787*******************************************************************
       789 Test data 789        22-MAY-11 Test data
789*******************************************************************
       790 Test data 790        23-MAY-11 Test data
790*******************************************************************
       792 Test data 792        18-MAY-11 Test data
792*******************************************************************

1000 rows selected.

Elapsed: 00:00:01.55

Execution Plan
----------------------------------------------------------
Plan hash value: 1692938441

----------------------------------------------------------------------------
| Id  | Operation         | Name   | Rows  | Bytes | Cost (%CPU)|
Time     |
----------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |        |  1000 |  1988K|     5   (0)|
00:00:01 |
|   1 |  TABLE ACCESS FULL| MYTEST |  1000 |  1988K|     5   (0)|
00:00:01 |
----------------------------------------------------------------------------

Note
-----
   - dynamic sampling used for this statement


Statistics
----------------------------------------------------------
         49  recursive calls
          0  db block gets
       3026  consistent gets
       2000  physical reads
          0  redo size
     643319  bytes sent via SQL*Net to client
     224385  bytes received via SQL*Net from client
       2002  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
       1000  rows processed

SQL>

Show us an autotrace report for your query and maybe we can see where
the problem lies.


David Fitzjarrell

-- 
You received this message because you are subscribed to the Google
Groups "Oracle PL/SQL" group.
To post to this group, send email to Oracle-PLSQL@googlegroups.com
To unsubscribe from this group, send email to
oracle-plsql-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/Oracle-PLSQL?hl=en

Reply via email to