国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

使CREATETABLEASSELECT能支持ORDERBY

2024-07-21 02:39:48
字體:
來源:轉載
供稿:網友
大家都知道,“CREATE TABLE AS SELECT”這個SQL命令并不支持“ORDER BY”,但假如我們想增加一個表,它存儲的是已經排列過的一組數據,這些數據來自一個現有表,該怎么辦呢?
  哈哈,可以通過先建立一個VIEW,然后再CREATE,是不是一個不錯的想法,看看下面的這篇文章,對你或許有用。
  
  一般情況下,對一個TABLE中的數據進行分類排序后有利于優化數據庫的查詢性能。
  
  例如:你的應用程序需要頻繁的執行一個查詢
  SELECT * FROM EMP WHERE NAME LIKE ‘M%’;
  
  假如EMP表中的所有行都被他們的的名字排了序,那么你的查詢將會有顯著提高。因為NAME中所有包含‘M’的行都被存儲在了一起,Oracle在查詢數據時僅僅從表中取得很少的DATA BLOCKS。當然,假如你的TABLE中的數據是靜態的,那么這個很好辦到,即在你CREATE TABLE時按照順序INSERT即可。但是往往我們的TABLE中的數據時常要更新,而SQL又不支持帶ORDER BY 字句的INSERT INTO ... SELECT ... FROM ...和CREATE TABLE AS SELECT ... FROM ...命令,于是只能放棄固有的排序了,結果當數據達到十幾萬條記錄時,查詢性能就顯著的下降了。如何處理這樣的問題呢,有兩個解決的方法。
  
  這里提供一個方法,通過GROUP BY操作來完成。
  
  CREATE VIEW EMPGROUP AS
  SELECT NAME,EMPID,HIREDATE,ROWNUM FROM EMP
  GROUP BY NAME, EMPID, HIREDATE,ROWNUM;
  
  然后用這個VIEW來增加一個TABLE
  
  CREATE TABLE SORTED_EMP AS SELECT NAME, EMPID, HIREDATE FROM EMPGROUP;
  
  注重:
  1、假如你使用ORACLE7.3以上版本,可以使用INLINE VIEW代替EMPGROUP VIEW。
  
  2、假如你建VIEW時忽略了ROWNUM,那么由于使用了GROUP BY,會有大量的重復記錄出現。
  

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临夏县| 内江市| 张家界市| 海晏县| 类乌齐县| 南平市| 连山| 奇台县| 晋中市| 镶黄旗| 西昌市| 县级市| 修武县| 茂名市| 芷江| 泸西县| 任丘市| 磴口县| 攀枝花市| 五家渠市| 分宜县| 济阳县| 许昌县| 都江堰市| 华亭县| 河北省| 酒泉市| 九龙县| 太保市| 永宁县| 府谷县| 红河县| 七台河市| 尼勒克县| 云南省| 延寿县| 兰考县| 正宁县| 正宁县| 钦州市| 阳信县|