Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1791462
  • 博文数量: 600
  • 博客积分: 10581
  • 博客等级: 上将
  • 技术积分: 6205
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-06 10:13
文章分类
文章存档

2016年(2)

2015年(9)

2014年(8)

2013年(5)

2012年(8)

2011年(36)

2010年(34)

2009年(451)

2008年(47)

分类: Oracle

2009-09-06 09:04:29

187. /*+ADD_EQUAL TABLE INDEX_NAM1INDEX_NAM2...*/
提示明确进行执行规划的选择,将几个单列索引的扫描合起来。
例如:
SELECT /*+INDEX_FFS(BSEMPMS IN_DPTNO
IN_EMPNOIN_SEX)*/ * FROM BSEMPMS WHERE EMP_NO='CCBZZP' AND DPT_NO='TDC306'
188. /*+USE_CONCAT*/
对查询中的WHERE后面的OR条件进行转换为UNION ALL的组合查询。
例如:
SELECT /*+USE_CONCAT*/ * FROM BSEMPMS WHERE DPT_NO='TDC506' AND SEX='M'

189. /*+NO_EXPAND*/
对于WHERE后面的OR 或者IN-LIST的查询语句,NO_EXPAND将阻止其基于优化器对其进行扩展。
例如:
SELECT /*+NO_EXPAND*/ * FROM BSEMPMS WHERE DPT_NO='TDC506' AND SEX='M'

190. /*+NOWRITE*/
禁止对查询块的查询重写操作。
191. /*+REWRITE*/
可以将视图作为参数。
192. /*+MERGE(TABLE)*/
能够对视图的各个查询进行相应的合并。
例如:
SELECT /*+MERGE(V) */ A.EMP_NO
A.EMP_NAMB.DPT_NO FROM BSEMPMS A (SELET DPT_NOAVG(SAL) AS AVG_SAL FROM BSEMPMS B GROUP BY DPT_NO) V WHERE A.DPT_NO=V.DPT_NO AND A.SAL>V.AVG_SAL
193. /*+NO_MERGE(TABLE)*/
对于有可合并的视图不再合并。
例如:
SELECT /*+NO_MERGE(V) */ A.EMP_NO
A.EMP_NAMB.DPT_NO FROM BSEMPMS A (SELET DPT_NOAVG(SAL) AS AVG_SAL FROM BSEMPMS B GROUP BY DPT_NO) V WHERE A.DPT_NO=V.DPT_NO AND A.SAL>V.AVG_SAL
194. /*+ORDERED*/
根据表出现在FROM中的顺序,ORDERED使ORACLE依此顺序对其连接。
例如:
SELECT /*+ORDERED*/ A.COL1
B.COL2C.COL3 FROM TABLE1 ATABLE2 BTABLE3 C WHERE A.COL1=B.COL1 AND B.COL1=C.COL1
195. /*+USE_NL(TABLE)*/
将指定表与嵌套的连接的行源进行连接,并把指定表作为内部表。
例如:
SELECT /*+ORDERED USE_NL(BSEMPMS)*/ BSDPTMS.DPT_NO
BSEMPMS.EMP_NOBSEMPMS.EMP_NAM FROM BSEMPMSBSDPTMS WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO
196. /*+USE_MERGE(TABLE)*/
将指定的表与其它行源通过合并排序连接方式连接起来。
例如:
SELECT /*+USE_MERGE(BSEMPMS
BSDPTMS)*/ * FROM BSEMPMSBSDPTMS WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO
197. /*+USE_HASH(TABLE)*/
将指定的表与其它行源通过哈希连接方式连接起来。
例如:
SELECT /*+USE_HASH(BSEMPMS
BSDPTMS)*/ * FROM BSEMPMSBSDPTMS WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO
198. /*+DRIVING_SITE(TABLE)*/
强制与ORACLE所选择的位置不同的表进行查询执行。
例如:
SELECT /*+DRIVING_SITE(DEPT)*/ * FROM BSEMPMS
DEPT@BSDPTMS WHERE BSEMPMS.DPT_NO=DEPT.DPT_NO199. /*+LEADING(TABLE)*/
将指定的表作为连接次序中的首表。

200. /*+CACHE(TABLE)*/
当进行全表扫描时,CACHE提示能够将表的检索块放置在缓冲区缓存中最近最少列表LRU的最近使用端
例如:
SELECT /*+FULL(BSEMPMS) CAHE(BSEMPMS) */ EMP_NAM FROM BSEMPMS

201. /*+NOCACHE(TABLE)*/
当进行全表扫描时,CACHE提示能够将表的检索块放置在缓冲区缓存中最近最少列表LRU的最近使用端
例如:
SELECT /*+FULL(BSEMPMS) NOCAHE(BSEMPMS) */ EMP_NAM FROM BSEMPMS

202. /*+APPEND*/
直接插入到表的最后,可以提高速度。
insert /*+append*/ into test1 select * from test4

203. /*+NOAPPEND*/
通过在插入语句生存期内停止并行模式来启动常规插入。
insert /*+noappend*/ into test1 select * from test4

ORACLE
内部函数
204.
如何得到字符串的第一个字符的ASCII?
ASCII(CHAR)
SELECT ASCII('ABCDE') FROM DUAL

结果: 65
205.
如何得到数值N指定的字符?
CHR(N)
SELECT CHR(68) FROM DUAL

结果: D
206.
如何连接两个字符串?
CONCAT(CHAR1
CHAR2)
SELECT CONCAT('ABC'
'DEFGH') FROM DUAL
结果: 'ABCDEFGH'
207.
如何将列中的数值代替为字符串?
DECODE(CHAR
N1CHAR1N2CHAR2...)
SELECT DECODE(DAY
1'SUN'2'MON') FROM DUAL
208. INITCAP(CHAR)
将字符串CHAR的第一个字符为大写,其余为小写。
SELECT INITCAP('ABCDE') FROM DUAL

209. LENGTH(CHAR)
取一字符串CHAR的长度。
SELECT LENGTH('ABCDE') FROM DUAL

210. LOWER(CHAR)
将字符串CHAR全部变为小写。
SELECT LOWER('ABCDE') FROM DUAL

211. LPAD(CHAR1
NCHAR2)
用字符串CHAR2包括的字符左填CHAR1,使其长度为N
SELECT LPAD('ABCDEFG'
10'123') FROM DUAL
结果: '123ABCDEFG'
212. LTRIM(CHAR
SET)
从字符串CHAR的左边移去字符串SET中的字符,直到第一个不是SET中的字符为止。
SELECT ('CDEFG'
'CD') FROM DUAL
结果: 'EFG'
213. NLS_INITCAP(CHAR)
取字符CHAR的第一个字符大写,其余字符为小写。
SELECT NLS_INITCAP('ABCDE') FROM DUAL

214. NLS_LOWER(CHAR)
将字符串CHAR包括的字符全部小写。
SELECT NLS_LOWER('AAAA') FROM DUAL

215. NLS_UPPER(CHAR)
将字符串CHAR包括的字符全部大写。
SELECT NLS_UPPER('AAAA') FROM DUAL

216. REPLACE(CHAR1
CHAR2CHAR3)
用字符串CHAR3代替每一个列值为CHAR2的列,其结果放在CHAR1中。
SELECT REPLACE(EMP_NO
'123''456') FROM DUAL
217. RPAD(CHAR1
NCHAR2)
用字符串CHAR2右填字符串CHAR1,使其长度为N
SELECT RPAD('234'
8'0') FROM DUAL
218. RTRIM(CHAR
SET)
移去字符串CHAR右边的字符串SET中的字符,直到最后一个不是SET中的字符为止。
SELECT RTRIM('ABCDE'
'DE') FROM DUAL
阅读(640) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~