oracle 命令行查看sql执行计划

本文介绍如何通过Oracle命令行工具查看SQL语句的执行计划,包括设置执行计划开关、使用变量绑定并执行SQL,以及如何解读执行计划。此外,还介绍了如何通过SQL提示指定索引的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

oracle命令行查看SQL的执行计划

1.定义变量

var d1 varchar2(10)
exec :d1:='20091001'

 

2.打开执行计划开关

set autotrace traceonly explain

 

3.绑定变量到SQL中,并执行SQL

select count(c.storageplatformid) from ispace_content_info c where c.storageplatformid <> '58' and c.storageplatformid <>'62' and c.contentid in( select t.contentid from ispace_flv_content t where t.flv_state<>3 and t.uploadtime < to_date(:"d1",'YYYY-MM-dd'));

 

4.查看结果

 

Execution Plan
----------------------------------------------------------
Plan hash value: 2058968918

--------------------------------------------------------------------------------
-------------------------

| Id  | Operation                      | Name                   | Rows  | Bytes
| Cost (%CPU)| Time     |

--------------------------------------------------------------------------------
-------------------------

|   0 | SELECT STATEMENT               |                        |     1 |    83
|     3   (0)| 00:00:01 |

|   1 |  SORT AGGREGATE                |                        |     1 |    83
|            |          |

|   2 |   NESTED LOOPS                 |                        |       |
|            |          |

|   3 |    NESTED LOOPS                |                        |     1 |    83
|     3   (0)| 00:00:01 |

|   4 |     TABLE ACCESS BY INDEX ROWID| ISPACE_FLV_CONTENT     |     1 |    44
|     2   (0)| 00:00:01 |

|*  5 |      INDEX RANGE SCAN          | IX_ISPACE_FLV_CONTENT  |     1 |
|     1   (0)| 00:00:01 |

|*  6 |     INDEX UNIQUE SCAN          | PK_ISPACE_CONTENT_INFO |     1 |
|     0   (0)| 00:00:01 |

|*  7 |    TABLE ACCESS BY INDEX ROWID | ISPACE_CONTENT_INFO    |     1 |    39
|     1   (0)| 00:00:01 |

--------------------------------------------------------------------------------
-------------------------


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

   5 - access("T"."UPLOADTIME"<TO_DATE(:d1,'YYYY-MM-dd'))
       filter("T"."FLV_STATE"<>3)
   6 - access("C"."CONTENTID"="T"."CONTENTID")
   7 - filter("C"."STORAGEPLATFORMID"<>'58' AND "C"."STORAGEPLATFORMID"<>'62')

 

 

 

----------

查看数据表的索引,大写表名

select p.index_name,p.column_name from user_ind_columns p where p.table_name='ISPACE_MESSAGE_INFO';

 

----------

给SQL加提示,使用强制索引,注意提示的格式.

select /*+ INDEX(ISPACE_MESSAGE_INFO IX_ISPACE_MSG_PID) */ count(MSGID) from ISPACE_MESSAGE_INFO where PARENTCATALOGID in (select * from table (cast( in_list(#parentCatalogIDs#) as cid_type)))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值