oracle sql性能优化系列 (四)1--acnow_net.htm

来自「这是在网上收集的关于oracle的sql语句优化的文章」· HTM 代码 · 共 448 行 · 第 1/3 页

HTM
448
字号
        <DIV id=article> 
          <TABLE cellSpacing=0 cellPadding=0 width=540 border=0 style="TABLE-LAYOUT: fixed"> 
            <TBODY> 
              <TR> 
                <TH class=f24><FONT color=#05006c> 
                  <H1>ORACLE SQL性能优化系列 (四)</H1> 
                  </FONT></TH> 
              </TR> 
              <TR> 
                <TD> <HR SIZE=1 bgcolor="#d9d9d9"> </TD> 
              </TR> 
              <TR> 
                <TD align=middle height=20>http://Tech.acnow.net 2005-4-29 <FONT color=#a20010>网络</FONT></TD> 
              </TR> 
              <TR> 
                <TD height=15></TD> 
              </TR> 
              <TR> 
                <TD class=l17><FONT class=f14 id=zoom><BR><BR>&nbsp;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp; Update 多个Column 例子:<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp; 低效:<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UPDATE EMP<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SET EMP_CAT = (SELECT MAX(CATEGORY) FROM EMP_CATEGORIES),<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SAL_RANGE = (SELECT MAX(SAL_RANGE) FROM EMP_CATEGORIES)<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE EMP_DEPT = 0020;<BR><BR>&nbsp;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp; 高效:<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UPDATE EMP<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SET (EMP_CAT, SAL_RANGE)<BR><BR>&nbsp;= (SELECT MAX(CATEGORY) , MAX(SAL_RANGE)<BR><BR>&nbsp;FROM EMP_CATEGORIES)<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE EMP_DEPT = 0020;<BR><BR>&nbsp;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR><BR>16.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 通过内部函数提高SQL效率.<BR><BR>&nbsp;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp; SELECT H.EMPNO,E.ENAME,H.HIST_TYPE,T.TYPE_DESC,COUNT(*)<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp; FROM HISTORY_TYPE T,EMP E,EMP_HISTORY H<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp; WHERE H.EMPNO = E.EMPNO<BR><BR>AND H.HIST_TYPE = T.HIST_TYPE<BR><BR>GROUP BY H.EMPNO,E.ENAME,H.HIST_TYPE,T.TYPE_DESC;<BR><BR>&nbsp;<BR><BR>通过调用下面的函数可以提高效率.<BR><BR>FUNCTION LOOKUP_HIST_TYPE(TYP IN NUMBER) RETURN VARCHAR2<BR><BR>AS<BR><BR>&nbsp;&nbsp;&nbsp; TDESC VARCHAR2(30);<BR><BR>&nbsp;&nbsp;&nbsp; CURSOR C1 IS&nbsp; <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT TYPE_DESC <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM HISTORY_TYPE<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE HIST_TYPE = TYP;<BR><BR>BEGIN <BR><BR>&nbsp;&nbsp;&nbsp; OPEN C1;<BR><BR>&nbsp;&nbsp;&nbsp; FETCH C1 INTO TDESC;<BR><BR>&nbsp;&nbsp;&nbsp; CLOSE C1;<BR><BR>&nbsp;&nbsp;&nbsp; RETURN (NVL(TDESC,’?’));<BR><BR>END;<BR><BR>&nbsp;<BR><BR>FUNCTION LOOKUP_EMP(EMP IN NUMBER) RETURN VARCHAR2<BR><BR>AS<BR><BR>&nbsp;&nbsp;&nbsp; ENAME VARCHAR2(30);<BR><BR>&nbsp;&nbsp;&nbsp; CURSOR C1 IS&nbsp; <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT ENAME<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM EMP<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE EMPNO=EMP;<BR><BR>BEGIN <BR><BR>&nbsp;&nbsp;&nbsp; OPEN C1;<BR><BR>&nbsp;&nbsp;&nbsp; FETCH C1 INTO ENAME;<BR><BR>&nbsp;&nbsp;&nbsp; CLOSE C1;<BR><BR>&nbsp;&nbsp;&nbsp; RETURN (NVL(ENAME,’?’));<BR><BR>END;<BR><BR>&nbsp;<BR><BR>SELECT H.EMPNO,LOOKUP_EMP(H.EMPNO),<BR><BR>H.HIST_TYPE,LOOKUP_HIST_TYPE(H.HIST_TYPE),COUNT(*)<BR><BR>FROM EMP_HISTORY H<BR><BR>GROUP BY H.EMPNO , H.HIST_TYPE;<BR><BR>&nbsp;<BR><BR>(译者按: 经常在论坛中看到如 ’能不能用一个SQL写出….’ 的贴子, 殊不知复杂的SQL往往牺牲了执行效率. 能够掌握上面的运用函数解决问题的方法在实际工作中是非常有意义的)<BR><BR>&nbsp;<BR><BR>&nbsp;(待续)<BR><p><div align="right">本新闻共<font color=red>2</font>页,当前在第<font color=red>2</font>页&nbsp;&nbsp;<a href="164558059816455832996.shtml">1</a>&nbsp;&nbsp;<font color="red">2</font>&nbsp;&nbsp;</div></p>
                  <P clear=all></P> 
                  </FONT></TD> 
              </TR> 
            </TBODY> 
          </TABLE> 
        </DIV> 
        <BR> 
		上一篇:<a href='../../2005-4/29/164558059816455885739.shtml' title ='在单机上创建物理的Oracle9i standby数据库'>在单机上创建物理的Oracle9i standby数据库</a> 下一篇:<a href='../../2005-4/29/164558059816455831878.shtml' title ='ORACLE SQL性能优化系列 (五)'>ORACLE SQL性能优化系列 (五)</a>
		<BR>
        <BR> 
        <TABLE class="tf" cellSpacing=0 cellPadding=0 width="100%" border=0> 
          <TBODY> 
            <TR> 
              <TD style="PADDING-RIGHT: 20px" align=right>
			  【<script type="text/javascript">
<!-- 
document.write("<a href=\"http:\/\/tech.acnow.net\/Sendmail.asp?NewsID=059816455832996\"  target=\"_blank\">发送给好友</a>");
-->
</script>】
			  【<A href="http://bbs.acnow.net/Index.asp?boardid=103">论坛</A>】
			  【<script type="text/javascript">
<!-- 
document.write("<a target=\"_blank\" Href=\"http:\/\/tech.acnow.net\/Users\/AddFavorite.asp?NewsID=8964\" style=\"CURSOR:hand\" onClick=\"window.external.AddFavorite(document.location.href,document.title)\" onMouseMove=\"status='收藏本页';\" onMouseOut=\"status='';\">添加到收藏夹</a>");
-->
</script>】
			  【<A target="_self" href="javascript:doZoom(16)">大</A> 
			  <A target="_self" href="javascript:doZoom(14)">中</A> 
			  <A target="_self" href="javascript:doZoom(12)">小</A>】
			  【<A target="_self" href="javascript:doPrint()">打印</A>】
			  【<A target="_self" href="javascript:window.close()">关闭</A>】</TD> 
            </TR> 
          </TBODY> 
        </TABLE> 
        <TABLE cellSpacing=0 cellPadding=0 width=545 border=0> 
          <TBODY> 
            <TR> 
              <TD height=19></TD> 
            </TR> 
            <TR> 
              <TD bgColor=#c6c9d1 height=1></TD> 
            </TR> 
            <TR> 
              <TD height=10></TD> 
            </TR> 
          </TBODY> 
        </TABLE> 
        <BR> 
        <DIV id=links> 
          <TABLE cellSpacing=0 cellPadding=0 width=542 border=0> 
            <TBODY> 
              <TR> 
                <TD><table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td><img src="http://tech.acnow.net/Files/Img/list_nav_spacer.gif"><a  Class="a2" href= http://tech.acnow.net/Html/DataBase/Oracle/2005-4/29/164559059816455944859.shtml title="ORACLE SQL性能优化系列 (十)">ORACLE&nbsp;SQL性能优化系列&nbsp;(十)</a></td></tr>
<tr>
<td Height=1 colspan="1">
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td Height=1 background="http://tech.acnow.net/Files/Img/title_line.gif">
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td><img src="http://tech.acnow.net/Files/Img/list_nav_spacer.gif"><a  Class="a2" href= http://tech.acnow.net/Html/DataBase/Oracle/2005-4/29/164558059816455833067.shtml title="ORACLE SQL性能优化系列 (七)">ORACLE&nbsp;SQL性能优化系列&nbsp;(七)</a></td></tr>
<tr>
<td Height=1 colspan="1">
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td Height=1 background="http://tech.acnow.net/Files/Img/title_line.gif">
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td><img src="http://tech.acnow.net/Files/Img/list_nav_spacer.gif"><a  Class="a2" href= http://tech.acnow.net/Html/DataBase/Oracle/2005-4/29/164559059816455975203.shtml title="ORACLE SQL性能优化系列 (十一)">ORACLE&nbsp;SQL性能优化系列&nbsp;(十一)</a></td></tr>
<tr>
<td Height=1 colspan="1">
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td Height=1 background="http://tech.acnow.net/Files/Img/title_line.gif">
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td><img src="http://tech.acnow.net/Files/Img/list_nav_spacer.gif"><a  Class="a2" href= http://tech.acnow.net/Html/DataBase/Oracle/2005-4/29/164558059816455831878.shtml title="ORACLE SQL性能优化系列 (五)">ORACLE&nbsp;SQL性能优化系列&nbsp;(五)</a></td></tr>
<tr>
<td Height=1 colspan="1">
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td Height=1 background="http://tech.acnow.net/Files/Img/title_line.gif">
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td><img src="http://tech.acnow.net/Files/Img/list_nav_spacer.gif"><a  Class="a2" href= http://tech.acnow.net/Html/DataBase/Oracle/2005-4/29/164558059816455862139.shtml title="ORACLE SQL性能优化系列 (二)">ORACLE&nbsp;SQL性能优化系列&nbsp;(二)</a></td></tr>
<tr>
<td Height=1 colspan="1">
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td Height=1 background="http://tech.acnow.net/Files/Img/title_line.gif">
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td><img src="http://tech.acnow.net/Files/Img/list_nav_spacer.gif"><a  Class="a2" href= http://tech.acnow.net/Html/DataBase/Oracle/2005-4/29/164558059816455832253.shtml title="ORACLE SQL性能优化系列 (八)">ORACLE&nbsp;SQL性能优化系列&nbsp;(八)</a></td></tr>
<tr>
<td Height=1 colspan="1">
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td Height=1 background="http://tech.acnow.net/Files/Img/title_line.gif">
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td><img src="http://tech.acnow.net/Files/Img/list_nav_spacer.gif"><a  Class="a2" href= http://tech.acnow.net/Html/DataBase/Oracle/2005-4/29/164558059816455832430.shtml title="ORACLE SQL性能优化系列 (九)">ORACLE&nbsp;SQL性能优化系列&nbsp;(九)</a></td></tr>
<tr>
<td Height=1 colspan="1">
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td Height=1 background="http://tech.acnow.net/Files/Img/title_line.gif">
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td><img src="http://tech.acnow.net/Files/Img/list_nav_spacer.gif"><a  Class="a2" href= http://tech.acnow.net/Html/DataBase/Oracle/2005-4/29/164558059816455850688.shtml title="ORACLE SQL性能优化系列 (六)">ORACLE&nbsp;SQL性能优化系列&nbsp;(六)</a></td></tr>
<tr>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?