📄 253.html
字号:
<STYLE type=text/css>
<!--
body,td { font-size:9pt;}
hr { color: #000000; height: 1px}
-->
</STYLE>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD><TITLE>FAQ汇萃 >> Oracle 专栏 >> 如何使‘CREATE TABLE AS SELECT’能支持ORDER BY ?</title>
</head>
<body >
<p><IMG SRC="../image/jsp001_middle_logo.gif" WIDTH="180" HEIGHT="60" BORDER=0 ALT=""></p>
<table width=100% bgcolor="#cccccc" align=center cellpadding="2" cellspacing="0" border=1 bordercolorlight="#000000" bordercolordark="#FFFFFF">
<tr bgcolor="#EFF8FF"><td>
<a href=http://www.jsp001.com/list_thread.php?int_attribute=1>FAQ汇萃</a>
>> <a href=http://www.jsp001.com/list_thread.php?forumid=20&int_attribute=1>Oracle 专栏</a>
>> 如何使‘CREATE TABLE AS SELECT’能支持ORDER BY ? [<a href=http://www.jsp001.com/forum/showthread.php?goto=newpost&threadid=253>查看别人的评论</a>]<br>
<hr><p>由 webmaster 发布于: 2001-02-05 11:33</p><p><img src="images/icons/icon11.gif" alt="Red face" border=0> </p><p> 大家都知道,“CREATE TABLE AS SELECT”这个SQL命令并不支持“ORDER BY”,但如果我们想增加一个表,它存储的是已经排列过的一组数据,这些数据来自一个现有表,该怎么办呢?<br>哈哈,可以通过先建立一个VIEW,然后再CREATE,是不是一个不错的想法,看看下面的这篇文章,对你或许有用。<br><br>一般情况下,对一个TABLE中的数据进行分类排序后有利于优化数据库的查询性能。<br><br>例如:你的应用程序需要频繁的执行一个查询<br>SELECT * FROM EMP WHERE NAME LIKE ‘M%’;<br><br>如果EMP表中的所有行都被他们的的名字排了序,那么你的查询将会有显著提高。因为NAME中所有包含‘M’的行都被存储在了一起,ORACLE在查询数据时仅仅从表中取得很少的DATA BLOCKS。当然,如果你的TABLE中的数据是静态的,那么这个很好办到,即在你CREATE TABLE时按照顺序INSERT即可。但是往往我们的TABLE中的数据时常要更新,而SQL又不支持带ORDER BY 字句的INSERT AS SELECT 和CREATE TABLE AS命令,于是只能放弃固有的排序了,结果当数据达到十几万条记录时,查询性能就显著的下降了。如何处理这样的问题呢,有两个解决的方法。<br><br>这里提供一个方法,通过GROUP BY操作来完成。<br><br>CREATE VIEW EMPGROUP AS <br>SELECT NAME,EMPID,HIREDATE,ROWNUM FROM EMP<br>GROUP BY NAME, EMPID, HIREDATE,ROWNUM;<br><br>然后用这个VIEW来增加一个TABLE<br><br>CREATE TABLE SORTED_EMP AS SELECT NAME, EMPID, HIREDATE FROM EMPGROUP;<br><br>注意:<br><br>1、如果你使用ORACLE7.3以上版本,可以使用INLINE VIEW代替EMPGROUP VIEW。<br><br>2、如果你建VIEW时忽略了ROWNUM,那么由于使用了GROUP BY,会有大量的重复记录出现。<br></p></td>
</tr>
</table>
<p>
<CENTER><a href="http://www.jsp001.com/forum/newreply.php?action=newreply&threadid=253">点这里对该文章发表评论</a></CENTER>
<p>该文章总得分是 <font color=red>2</font> 分,你认为它对你有帮助吗?
[<a href=javascript:void(0) onclick=window.open("http://www.jsp001.com/forum/codeVote.php?threadid=253&intVote=4","","menubar=no,toolbar=no,location=no,directories=no,status=no,resizable=no,scrollbars=no,width=70,height=40,top=0,left=0")>非常多</a>](<font color=red>0</font>)
[<a href=javascript:void(0) onclick=window.open("http://www.jsp001.com/forum/codeVote.php?threadid=253&intVote=2","","menubar=no,toolbar=no,location=no,directories=no,status=no,resizable=no,scrollbars=no,width=70,height=40,top=0,left=0")>有一些</a>](<font color=red>1</font>)
[<a href=javascript:void(0) onclick=window.open("http://www.jsp001.com/forum/codeVote.php?threadid=253&intVote=1","","menubar=no,toolbar=no,location=no,directories=no,status=no,resizable=no,scrollbars=no,width=70,height=40,top=0,left=0")>无帮助</a>](<font color=red>0</font>)
[<a href=javascript:void(0) onclick=window.open("http://www.jsp001.com/forum/codeVote.php?threadid=253&intVote=-1","","menubar=no,toolbar=no,location=no,directories=no,status=no,resizable=no,scrollbars=no,width=70,height=40,top=0,left=0")>是灌水</a>](<font color=red>0</font>) </p>
<script language="javascript" src="http://www.jsp001.com/include/read_thread_script.php?threadid=253"></script>
<p><CENTER>
Copyright © 2001 - 2009 JSP001.com . All Rights Reserved <P>
<IMG SRC="../image/jsp001_small_logo.gif" WIDTH="85" HEIGHT="30" BORDER=0 ALT="">
</CENTER></p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -