最近时间基本都花在给公司员工培训上,都是一些初级的培训,看着PUB吧上的那些牛人们,真想他们给我来次培训。有时候真想立刻换个工作,身边都是一些ORALCE高手们该多好,这样进步也快,可惜啊,目前还没那魄力,再等等吧。
昨天培训的是tkprof工具的用法,讲义概要也已经发到PUB上了,初级菜鸟的朋友可以看看。
http://www.itpub.net/thread-1316020-1-1.html
今天给他们培训的内容是提示的用法,及提示的作用范围。内容大体如下:
1)提示的用法
提示(HINT)虽然也采用了/*。。。*/的形式,可是提示不同于注释,注释可以放在代码的任意位置,可是提示必须紧跟在select,delete,update这些关键字之后,且/*必须带+号。如:
select /*+ full(t) */* from t; 最好养成好的习惯,full(t)前后都带着一个空格,因为有些应用程序可能会把HINT当成注释。需要注意的是如果你的提示存在语法问题,SQL解析器并不会抛出错误,而会把它当成真正的注释。
2)提示的分类(这里不会列举所有的提示)
一、初始化参数提示:如非常熟悉的first_rows_n,all_rows,gather_plan_statistics。以gather_plan_statistics为例来说明,如果statistics_level参数设置的不是all,那么语句在执行的过程中并不会统计语句执行过程中实际的执行时间,读取的buffer数,以及Cardinality.有时候为了测试需要我们可以通过添加HINT,来达到目的。
SQL> select /*+ gather_plan_statistics */* from t where id=1;
SQL> select * from table(dbms_xplan.display_cursor(null,null,'iostats last'));
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------------------------------------------
--------
SQL_ID cqu5tgppp9ucu, child number 0
-------------------------------------
select /*+ gather_plan_statistics */* from t where id=1
Plan hash value: 1316489643
-------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | Reads |
-------------------------------------------------------------------------------------------------------------------
| 1 | PARTITION RANGE ALL | | 1 | 1 | 2 |00:00:00.10 | 51 | 50 |
| 2 | TABLE ACCESS BY LOCAL INDEX ROWID| T | 48 | 1 | 2 |00:00:00.21 | 51 | 50 |
|* 3 | INDEX RANGE SCAN | IND_LOCAL | 48 | 1 | 2 |00:00:00.19 | 49 | 48 |
-------------------------------------------------------------------------------------------------------------------
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22034023/viewspace-665743/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22034023/viewspace-665743/