﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-fjpan2002</title><link>http://www.blogjava.net/fjpan2002/</link><description /><language>zh-cn</language><lastBuildDate>Sun, 03 May 2026 04:34:36 GMT</lastBuildDate><pubDate>Sun, 03 May 2026 04:34:36 GMT</pubDate><ttl>60</ttl><item><title>Oracle Sql提示学习笔记</title><link>http://www.blogjava.net/fjpan2002/archive/2006/11/16/81565.html</link><dc:creator>勇敢的心</dc:creator><author>勇敢的心</author><pubDate>Thu, 16 Nov 2006 09:05:00 GMT</pubDate><guid>http://www.blogjava.net/fjpan2002/archive/2006/11/16/81565.html</guid><wfw:comment>http://www.blogjava.net/fjpan2002/comments/81565.html</wfw:comment><comments>http://www.blogjava.net/fjpan2002/archive/2006/11/16/81565.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/fjpan2002/comments/commentRss/81565.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fjpan2002/services/trackbacks/81565.html</trackback:ping><description><![CDATA[
		<div>1、FIRST_ROWS</div>
		<div>   指示优化器尽可能快地返回前n行记录，提高响应速度。如果没有指定参数，则返回第一行。该提示对Update和Insert无效，对包含块操作的select语句无效，如排序和group。 这样的语句不能优化最佳响应时间，因为Oracle在返回第一行之前，必须获得所有的记录。如果在这种情况下使用了该提示，优化器会优化最佳吞吐量(相当于ALL_ROWS提示)。</div>
		<div> </div>
		<div>2、FULL</div>
		<div>   指示优化器执行全表扫描，即使有索引，也不会走索引。</div>
		<div>   </div>
		<div>
				<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
						<img id="Codehighlighter1_10_23_Open_Image" onclick="this.style.display='none'; Codehighlighter1_10_23_Open_Text.style.display='none'; Codehighlighter1_10_23_Closed_Image.style.display='inline'; Codehighlighter1_10_23_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_10_23_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_10_23_Closed_Text.style.display='none'; Codehighlighter1_10_23_Open_Image.style.display='inline'; Codehighlighter1_10_23_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
						<span style="COLOR: #000000">   </span>
						<span style="COLOR: #0000ff">SELECT</span>
						<span style="COLOR: #000000"> </span>
						<span id="Codehighlighter1_10_23_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span>
						<span id="Codehighlighter1_10_23_Open_Text">
								<span style="COLOR: #008080">/*</span>
								<span style="COLOR: #008080">+ FULL(e) </span>
								<span style="COLOR: #008080">*/</span>
						</span>
						<span style="COLOR: #000000"> employee_id, last_name<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span>
						<span style="COLOR: #0000ff">FROM</span>
						<span style="COLOR: #000000"> hr.employees e </span>
						<span style="COLOR: #0000ff">WHERE</span>
						<span style="COLOR: #000000"> last_name </span>
						<span style="COLOR: #808080">LIKE</span>
						<span style="COLOR: #000000"> :b1;</span>
				</div>
		</div>
		<div>   </div>
		<div>   注意：如果表有别名，则必须使用别名。并且即使表加上了schema名称，在提示中也不能指定schema名称。</div>
		<div> </div>
		<div>3、HASH</div>
		<div>   指示优化器使用Hash扫描表，只适用于表簇中的表。</div>
		<div> </div>
		<div>4、INDEX</div>
		<div>   指示优化器适用Index扫描表，适用于函数、域、B树、位图和位图联合索引。</div>
		<div>   Index提示遵循以下规范：</div>
		<div>   a、如果Index提示指定单个的索引，那么数据库执行该索引上的扫描，优化器不会执行全表扫描或者表上的其他索引。</div>
		<div>   b、对于指定了多个索引的组合的Index提示，Oracle推荐使用INDEX_COMBINE而不是INDEX提示，因为它更加通用，如果Index提示指定了index列表，那么优化器会考虑走每个索引的代码，并从中选择代价最小的一条索引，如果扫描多个index的代价最小，那么优化器会扫描该个索引列表。优化器不会走全表扫描或者没有在index列表上的索引。</div>
		<div>   c、如果Index提示没有指定Index，优化器会评估扫描每个Index的代价，并选择代价最小的Index，如果组合Index代价最小，那么优化器会选择扫描多个索引，并合并结果集。优化器不会走全表扫描。</div>
		<div> </div>
		<div>
				<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
						<img id="Codehighlighter1_10_50_Open_Image" onclick="this.style.display='none'; Codehighlighter1_10_50_Open_Text.style.display='none'; Codehighlighter1_10_50_Closed_Image.style.display='inline'; Codehighlighter1_10_50_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_10_50_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_10_50_Closed_Text.style.display='none'; Codehighlighter1_10_50_Open_Image.style.display='inline'; Codehighlighter1_10_50_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
						<span style="COLOR: #000000">   </span>
						<span style="COLOR: #0000ff">SELECT</span>
						<span style="COLOR: #000000"> </span>
						<span id="Codehighlighter1_10_50_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span>
						<span id="Codehighlighter1_10_50_Open_Text">
								<span style="COLOR: #008080">/*</span>
								<span style="COLOR: #008080">+ INDEX (employees emp_department_ix)</span>
								<span style="COLOR: #008080">*/</span>
						</span>
						<span style="COLOR: #000000">  employee_id, department_id<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">FROM</span>
						<span style="COLOR: #000000"> employees </span>
						<span style="COLOR: #0000ff">WHERE</span>
						<span style="COLOR: #000000"> department_id </span>
						<span style="COLOR: #808080">&gt;</span>
						<span style="COLOR: #000000"> </span>
						<span style="FONT-WEIGHT: bold; COLOR: #800000">50</span>
						<span style="COLOR: #000000">;</span>
				</div>
		</div>
		<div> </div>
		<div>5、INDEX_ASC</div>
		<div>   按索引值的升序方向扫描索引，其他参数与INDEX 提示完全一样。</div>
		<div> </div>
		<div>6、INDEX_COMBINE</div>
		<div>   联合索引提示。索引规则与INDEX提示一样。</div>
		<div>   </div>
		<div>
				<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
						<img id="Codehighlighter1_10_65_Open_Image" onclick="this.style.display='none'; Codehighlighter1_10_65_Open_Text.style.display='none'; Codehighlighter1_10_65_Closed_Image.style.display='inline'; Codehighlighter1_10_65_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_10_65_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_10_65_Closed_Text.style.display='none'; Codehighlighter1_10_65_Open_Image.style.display='inline'; Codehighlighter1_10_65_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
						<span style="COLOR: #000000">   </span>
						<span style="COLOR: #0000ff">SELECT</span>
						<span style="COLOR: #000000"> </span>
						<span id="Codehighlighter1_10_65_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span>
						<span id="Codehighlighter1_10_65_Open_Text">
								<span style="COLOR: #008080">/*</span>
								<span style="COLOR: #008080">+ INDEX_COMBINE(e emp_manager_ix emp_department_ix) </span>
								<span style="COLOR: #008080">*/</span>
						</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #808080">*</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						</span>
						<span style="COLOR: #0000ff">FROM</span>
						<span style="COLOR: #000000"> employees e<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
						<span style="COLOR: #0000ff">WHERE</span>
						<span style="COLOR: #000000"> manager_id </span>
						<span style="COLOR: #808080">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="FONT-WEIGHT: bold; COLOR: #800000">108</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						</span>
						<span style="COLOR: #808080">OR</span>
						<span style="COLOR: #000000"> department_id </span>
						<span style="COLOR: #808080">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="FONT-WEIGHT: bold; COLOR: #800000">110</span>
						<span style="COLOR: #000000">;</span>
				</div>
		</div>
		<div> </div>
		<div>7、INDEX_DESC</div>
		<div>  降序INDEX提示。</div>
		<div> </div>
		<div>
				<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
						<img id="Codehighlighter1_7_38_Open_Image" onclick="this.style.display='none'; Codehighlighter1_7_38_Open_Text.style.display='none'; Codehighlighter1_7_38_Closed_Image.style.display='inline'; Codehighlighter1_7_38_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_7_38_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_7_38_Closed_Text.style.display='none'; Codehighlighter1_7_38_Open_Image.style.display='inline'; Codehighlighter1_7_38_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
						<span style="COLOR: #0000ff">SELECT</span>
						<span style="COLOR: #000000"> </span>
						<span id="Codehighlighter1_7_38_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span>
						<span id="Codehighlighter1_7_38_Open_Text">
								<span style="COLOR: #008080">/*</span>
								<span style="COLOR: #008080">+ INDEX_DESC(e emp_name_ix) </span>
								<span style="COLOR: #008080">*/</span>
						</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #808080">*</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						</span>
						<span style="COLOR: #0000ff">FROM</span>
						<span style="COLOR: #000000"> employees e;</span>
				</div>
		</div>
		<div> </div>
		<div>8、INDEX_FFS</div>
		<div>  指示优化器执行快速全索引扫描，而不是全表扫描。</div>
		<div> </div>
		<div>
				<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
						<img id="Codehighlighter1_7_37_Open_Image" onclick="this.style.display='none'; Codehighlighter1_7_37_Open_Text.style.display='none'; Codehighlighter1_7_37_Closed_Image.style.display='inline'; Codehighlighter1_7_37_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_7_37_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_7_37_Closed_Text.style.display='none'; Codehighlighter1_7_37_Open_Image.style.display='inline'; Codehighlighter1_7_37_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
						<span style="COLOR: #0000ff">SELECT</span>
						<span style="COLOR: #000000"> </span>
						<span id="Codehighlighter1_7_37_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span>
						<span id="Codehighlighter1_7_37_Open_Text">
								<span style="COLOR: #008080">/*</span>
								<span style="COLOR: #008080">+ INDEX_FFS(e emp_name_ix) </span>
								<span style="COLOR: #008080">*/</span>
						</span>
						<span style="COLOR: #000000"> first_name<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
						<span style="COLOR: #0000ff">FROM</span>
						<span style="COLOR: #000000"> employees e;</span>
				</div>
		</div>
		<div> </div>
		<div>9、INDEX_JOIN</div>
		<div>  以INDEX JOIN的方式扫描，必须存在足够少的INDEX，这些索引包含着查询中所有的列。</div>
		<div> </div>
		<div>
				<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
						<img id="Codehighlighter1_7_59_Open_Image" onclick="this.style.display='none'; Codehighlighter1_7_59_Open_Text.style.display='none'; Codehighlighter1_7_59_Closed_Image.style.display='inline'; Codehighlighter1_7_59_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_7_59_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_7_59_Closed_Text.style.display='none'; Codehighlighter1_7_59_Open_Image.style.display='inline'; Codehighlighter1_7_59_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
						<span style="COLOR: #0000ff">SELECT</span>
						<span style="COLOR: #000000"> </span>
						<span id="Codehighlighter1_7_59_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span>
						<span id="Codehighlighter1_7_59_Open_Text">
								<span style="COLOR: #008080">/*</span>
								<span style="COLOR: #008080">+ INDEX_JOIN(e emp_manager_ix emp_department_ix) </span>
								<span style="COLOR: #008080">*/</span>
						</span>
						<span style="COLOR: #000000"> department_id<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
						<span style="COLOR: #0000ff">FROM</span>
						<span style="COLOR: #000000"> employees e </span>
						<span style="COLOR: #0000ff">WHERE</span>
						<span style="COLOR: #000000"> manager_id </span>
						<span style="COLOR: #808080">&lt;</span>
						<span style="COLOR: #000000"> </span>
						<span style="FONT-WEIGHT: bold; COLOR: #800000">110</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #808080">AND</span>
						<span style="COLOR: #000000"> department_id </span>
						<span style="COLOR: #808080">&lt;</span>
						<span style="COLOR: #000000"> </span>
						<span style="FONT-WEIGHT: bold; COLOR: #800000">50</span>
						<span style="COLOR: #000000">;</span>
				</div>
		</div>
		<div> </div>
		<div>10、INDEX_SS</div>
		<div>  索引跳跃扫描提示。</div>
		<div> </div>
		<div>11、LEADING</div>
		<div>  指定特定的表放在执行计划的前面，它比ORDERED提示更加通用。</div>
		<div>  如果因为Join路线的依赖关系而不能首先被Join，提示就会被忽略；如果指定了两个或者多个冲突的LEADING提示，则他们都会被忽略；如果指定了ORDERED提示，那么LEADING就会被忽略。</div>
		<div> </div>
		<div>12、MERGE</div>
		<div>  将视图合并到查询。</div>
		<div>  如果视图查询语句包含GROUP BY子句或者SELECT语句中用到了 DISTINCT，那么优化器能够将视图合并到查询语句中，合成的合并也能够合并IN子查询，如果IN子查询没有关联。</div>
		<div> </div>
		<div>
				<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
						<img id="Codehighlighter1_9_23_Open_Image" onclick="this.style.display='none'; Codehighlighter1_9_23_Open_Text.style.display='none'; Codehighlighter1_9_23_Closed_Image.style.display='inline'; Codehighlighter1_9_23_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_9_23_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_9_23_Closed_Text.style.display='none'; Codehighlighter1_9_23_Open_Image.style.display='inline'; Codehighlighter1_9_23_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
						<span style="COLOR: #000000">  </span>
						<span style="COLOR: #0000ff">SELECT</span>
						<span style="COLOR: #000000"> </span>
						<span id="Codehighlighter1_9_23_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span>
						<span id="Codehighlighter1_9_23_Open_Text">
								<span style="COLOR: #008080">/*</span>
								<span style="COLOR: #008080">+ MERGE(v) </span>
								<span style="COLOR: #008080">*/</span>
						</span>
						<span style="COLOR: #000000"> e1.last_name, e1.salary, v.avg_salary<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
						<span style="COLOR: #0000ff">FROM</span>
						<span style="COLOR: #000000"> employees e1,<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />(</span>
						<span style="COLOR: #0000ff">SELECT</span>
						<span style="COLOR: #000000"> department_id, </span>
						<span style="COLOR: #ff00ff">avg</span>
						<span style="COLOR: #000000">(salary) avg_salary<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
						<span style="COLOR: #0000ff">FROM</span>
						<span style="COLOR: #000000"> employees e2<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
						<span style="COLOR: #0000ff">GROUP</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">BY</span>
						<span style="COLOR: #000000"> department_id) v<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
						<span style="COLOR: #0000ff">WHERE</span>
						<span style="COLOR: #000000"> e1.department_id </span>
						<span style="COLOR: #808080">=</span>
						<span style="COLOR: #000000"> v.department_id </span>
						<span style="COLOR: #808080">AND</span>
						<span style="COLOR: #000000"> e1.salary </span>
						<span style="COLOR: #808080">&gt;</span>
						<span style="COLOR: #000000"> v.avg_salary;</span>
				</div>
		</div>
		<div> </div>
		<div>13、NOAPPEND</div>
		<div>   在并行模式中使用常规插入方法。</div>
		<div> </div>
		<div>14、NOCACHE</div>
		<div> </div>
		<div>15、NO_EXPAND</div>
		<div> </div>
		<div>16、NO_FACT</div>
		<div> </div>
		<div>17、NO_INDEX</div>
		<div> </div>
		<div>18、NO_INDEX_SS</div>
		<div> </div>
		<div>19、NO_MERGE</div>
		<div> </div>
		<div>20、NO_PARALLEL</div>
		<div>   覆盖了使用DDL语言创建或者更改table的PARALLEL参数的设置。</div>
		<div> </div>
		<div>21、NO_PARALLEL_INDEX</div>
		<div>   覆盖了使用DDL语言创建或者更改index的PARALLEL参数的设置。</div>
		<div> </div>
		<div>22、NO_PUSH_PRED</div>
		<div>   </div>
		<div>23、NO_PUSH_SUBQ</div>
		<div> </div>
		<div>24、NO_PX_JOIN_FILTER</div>
		<div>    阻止优化器使用并行联合位图过滤器</div>
		<div> </div>
		<div>25、NO_REWRITE</div>
		<div>    使查询重写失效</div>
		<div> </div>
		<div>26、NO_QUERY_TRANSFORMATION</div>
		<div>    跳过所有查询转换，包括但不限于：OR-expansion、视图合并、无嵌套子查询、星型转换和物化视图重写。</div>
		<div> </div>
		<div>27、NO_STAR_TRANSFORMATION</div>
		<div> </div>
		<div>28、NO_UNNEST</div>
		<div> </div>
		<div>29、NO_USE_HASH</div>
		<div> </div>
		<div>30、ORDERED</div>
		<div>   指示优化器按照FROM子句出现的表顺序join表。Oracle推荐使用LEADING提示。</div>
		<div> </div>
		<div>31、PARALLEL</div>
		<div>   指示优化器使用指定数目的服务器去执行并行操作，包括SELECT、INSERT、MERGE、UPDATE和DELETE部分的语句和表扫描部分都可使用。</div>
		<div>   注意：如果发生sort或者group，那么服务器的数量应该是提示指定的两倍。</div>
		<div>   如果任何并行都被禁止，那么提示就会被忽略。</div>
		<div>   如果指定了DEFAULT或者没有指定任何值，那么查询器就会去检查初始参数的设置来决定并行度。</div>
		<div>   临时表上的该提示将会被忽略。</div>
		<div> </div>
		<div>32、PARALLEL_INDEX</div>
		<div>   为分区索引指定并行索引扫描的数量。示例：</div>
		<div>    SELECT /*+ PARALLEL_INDEX(table1, index1, 3) */</div>
		<div> </div>
		<div>33、PQ_DISTRIBUTE</div>
		<div> </div>
		<div>34、PUSH_PRED</div>
		<div> </div>
		<div>35、PUSH_SUBQ</div>
		<div> </div>
		<div>36、REWRITE</div>
		<div>    对物化视图使用查询重写。</div>
<img src ="http://www.blogjava.net/fjpan2002/aggbug/81565.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fjpan2002/" target="_blank">勇敢的心</a> 2006-11-16 17:05 <a href="http://www.blogjava.net/fjpan2002/archive/2006/11/16/81565.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle Direct-Path Insert学习笔记</title><link>http://www.blogjava.net/fjpan2002/archive/2006/11/14/81051.html</link><dc:creator>勇敢的心</dc:creator><author>勇敢的心</author><pubDate>Tue, 14 Nov 2006 01:22:00 GMT</pubDate><guid>http://www.blogjava.net/fjpan2002/archive/2006/11/14/81051.html</guid><wfw:comment>http://www.blogjava.net/fjpan2002/comments/81051.html</wfw:comment><comments>http://www.blogjava.net/fjpan2002/archive/2006/11/14/81051.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fjpan2002/comments/commentRss/81051.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fjpan2002/services/trackbacks/81051.html</trackback:ping><description><![CDATA[
		<div>(1)、Oracle插入数据有两种方式：</div>
		<div>a、常规插入：重新使用table中的自由空间，在已有数据中插入新数据；维护引用完整性约束。</div>
		<div>b、Direct-Path插入：在表中已有数据之后插入新数据；数据直接插入数据文件，绕过buffer cache；已有数据中的自由空间没有被重新利用；忽略了引用完整性约束。</div>
		<div> </div>
		<div>（2）、连续模式：一个进程执行sql语句；</div>
		<div>       并行模式：多个进程同时执行一个sql语句，即并行执行。</div>
		<div> </div>
		<div>（3）Direct-Path插入的优点：</div>
		<div>1、可以disable redo log和undo log；而常规插入却不可以如此，并且重用自由空间和维护引用完整性。</div>
		<div>2、通过CREATE TABLE...AS SELECT 语句可以从现有表中创建新表，使用Direct-Path插入可以在插入时更新定义在目标表上的任意索引。</div>
		<div>3、Direct-Path插入能保证事务的原子性，即使在并行模式下。使用SQL*Loader在并行模式加载中不能保证原子性。</div>
		<div>4、当并行Direct-Path加载发生错误时，索引被标志成UNUSABLE。</div>
		<div>5、如果想使用表压缩的压缩格式存储数据，必须使用Direct-Path插入。</div>
		<div> </div>
		<div> </div>
		<div>（4）使用Direct-Path插入：</div>
		<div> </div>
		<div>在连续模式中，在Insert语句中指定“APPEND”提示，在INSERT关键字之后，或者在INSERT子查询中的SELECT关键字之后。</div>
		<div>在并行DML模式中，默认的就是DIRECT-PATH插入，为了运行并行DML模式，必须满足以下条件：</div>
		<div>a、必须是Oracle企业版；</div>
		<div>b、必须在session中使并行DML生效，执行以下sql语句：</div>
		<div>ALTER SESSION { ENABLE | FORCE } PARALLEL DML;</div>
		<div>c、必须指定table的并行属性，在创建的时候或者其他时候，或者在insert操作时使用“PARALLEL”提示。</div>
		<div> </div>
		<div>为了使Direct-Path Insert模式失效，在INSERT语句中指定“NOAPPEND”提示，覆盖并行DML模式。</div>
		<div> </div>
		<div>（5）、Direct-Path INSERT 是如何工作的</div>
		<div> </div>
		<div>在分区表和非分区表都可以使用Direct-Path INSERT</div>
		<div> </div>
		<div>连续Direct-Path INSERT到分区和非分区表</div>
		<div>  单个进程插入数据到高水位标志之上，当执行完commit之后，高水位标志得到更新。</div>
		<div> </div>
		<div>并行Direct-Path INSERT到分区表</div>
		<div>  类似于serial Direct-Path INSERT，每个并行操作分配给一个或者多个分区，每个并行操作插入数据到各自的分区段的高水位标志之上，commit之后，用户就能看到更新的数据。</div>
		<div> </div>
		<div>并行Direct-Path INSERT到非分区表</div>
		<div>  每个并行执行分配一个新的临时段，并插入数据到临时段。当commit运行后，并行执行协调者合并新的临时段到主表段，用户就能看到更新的数据。</div>
		<div> </div>
		<div>为Direct-Path INSERT指定的Log模式</div>
		<div>   Direct-Path INSERT可以使用Log或者不使用Log。</div>
		<div> </div>
		<div>（6）、其他需要注意的地方：</div>
		<div>    索引维护：Oracle在Direct-Path INSERT 操作末尾，对具有索引的表执行索引维护，这样就避免了在drop掉索引后，再rebuild。</div>
		<div>    使用的空间：Direct-Path INSERT比常规的插入需要更多的空间。因为它将数据插入在高水位之上。并行插入非分区表需要更多的空间，因为它需要为每一个并行创建临时段。</div>
		<div>    锁：在插入期间，数据库在表上获得排他锁，用户不能在表上执行并行插入、更新或者删除操作，并行的索引创建和build也不被允许。但却可以并行查询，但查询返回的是插入之前的结果集。</div>
<img src ="http://www.blogjava.net/fjpan2002/aggbug/81051.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fjpan2002/" target="_blank">勇敢的心</a> 2006-11-14 09:22 <a href="http://www.blogjava.net/fjpan2002/archive/2006/11/14/81051.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>liferay中的article、structure和template之间的关系</title><link>http://www.blogjava.net/fjpan2002/archive/2005/12/30/26018.html</link><dc:creator>勇敢的心</dc:creator><author>勇敢的心</author><pubDate>Fri, 30 Dec 2005 02:59:00 GMT</pubDate><guid>http://www.blogjava.net/fjpan2002/archive/2005/12/30/26018.html</guid><wfw:comment>http://www.blogjava.net/fjpan2002/comments/26018.html</wfw:comment><comments>http://www.blogjava.net/fjpan2002/archive/2005/12/30/26018.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fjpan2002/comments/commentRss/26018.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fjpan2002/services/trackbacks/26018.html</trackback:ping><description><![CDATA[<P>在Liferay的CMS中articles、structures和templates是三个重要的概念。<BR><BR>article：可以通过article显示Liferay Portal页面的内容，如首页默认的就是Home Index这个article。 article可以由template驱动，即article的内容和展示样式都由template描述的xslt模板所决定，当然article也可不由template驱动，这时article的内容可以由Liferay内置的Rich Html Editor编写，但是可重用性较差。<BR><BR>structure：定义了xml的格式（<STRONG><FONT size=2>Schema </FONT></STRONG>），它与article没有直接的关联，structure被应用到template中，从而影响article的内容。Liferay可以可视化地编辑<STRONG><FONT size=2>Schema 。<BR></FONT></STRONG><BR>template：article的模板，决定article的内容和显示样式，此外Liferay还定义了一些tag，可以方便地应用到模板中，如"&lt;runtime-portlet name="58" /&gt;",就是在加载模板时动态地将Login Portlet加载到xml。<BR><BR>此外在编写article或者template，输入中文会显示乱码，我们的解决方法是修改了Liferay的<BR>com.liferay.util.xml.XMLFormatter 的toString()方法<BR>和com.liferay.portlet.journal.util.JournalUtil 的transform()方法<BR>使用StringWriter来进行输出，而不是ByteArrayOutputStream。<BR><BR>后记：写得有点乱，欢迎有兴趣的朋友批评指正，交流学习。<BR><BR></P><img src ="http://www.blogjava.net/fjpan2002/aggbug/26018.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fjpan2002/" target="_blank">勇敢的心</a> 2005-12-30 10:59 <a href="http://www.blogjava.net/fjpan2002/archive/2005/12/30/26018.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts+Spring的三种整合方式（转）</title><link>http://www.blogjava.net/fjpan2002/archive/2005/11/28/21627.html</link><dc:creator>勇敢的心</dc:creator><author>勇敢的心</author><pubDate>Mon, 28 Nov 2005 02:39:00 GMT</pubDate><guid>http://www.blogjava.net/fjpan2002/archive/2005/11/28/21627.html</guid><wfw:comment>http://www.blogjava.net/fjpan2002/comments/21627.html</wfw:comment><comments>http://www.blogjava.net/fjpan2002/archive/2005/11/28/21627.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fjpan2002/comments/commentRss/21627.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fjpan2002/services/trackbacks/21627.html</trackback:ping><description><![CDATA[一、使用&nbsp;Spring&nbsp;的&nbsp;ActionSupport&nbsp;类整合&nbsp;Structs<BR>使用&nbsp;Spring&nbsp;的&nbsp;DelegatingRequestProcessor&nbsp;覆盖&nbsp;Struts&nbsp;的&nbsp;RequestProcessor&nbsp;将&nbsp;Struts&nbsp;Action&nbsp;管理委托给&nbsp;Spring&nbsp;框架装载应用程序环境<BR>二、覆盖&nbsp;RequestProcessor<BR>使用&nbsp;org.springframework.web.struts.DelegatingRequestProcessor&nbsp;类来覆盖&nbsp;Struts&nbsp;的&nbsp;RequestProcessor&nbsp;处理程序<BR>三、将Action管理委托给&nbsp;Spring<BR><BR>原文请参见“使用 Spring 更好地处理 Struts 动作”<BR><BR><A href="http://www-128.ibm.com/developerworks/cn/java/j-sr2.html">http://www-128.ibm.com/developerworks/cn/java/j-sr2.html</A><img src ="http://www.blogjava.net/fjpan2002/aggbug/21627.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fjpan2002/" target="_blank">勇敢的心</a> 2005-11-28 10:39 <a href="http://www.blogjava.net/fjpan2002/archive/2005/11/28/21627.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>