freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

oracle數(shù)據(jù)庫操作手冊2[1](編輯修改稿)

2024-08-03 11:57 本頁面
 

【文章內(nèi)容簡介】 HERE EMPNO 0 AND EXISTS (SELECT 39。X39。 FROM DEPT WHERE = AND LOC = 39。MELB39。)十二、用NOT EXISTS替代NOT IN在子查詢中,NOT IN子句將執(zhí)行一個內(nèi)部的排序和合并. 無論在哪種情況下,NOT IN都是最低效的 (因為它對子查詢中的表執(zhí)行了一個全表遍歷). 為了避免使用NOT IN ,我們可以把它改寫成外連接(Outer Joins)或NOT EXISTS. 例如: SELECT … FROM EMP WHERE DEPT_NO NOT IN (SELECT DEPT_NO FROM DEPT WHERE DEPT_CAT=39。A39。)。 : (方法一: 高效) SELECT …. FROM EMP A,DEPT B WHERE = (+) AND IS NULL  AND (+) = 39。A39。 (方法二: 最高效) SELECT …. FROM EMP E WHERE NOT EXISTS (SELECT 39。X39。 FROM DEPT D WHERE = AND DEPT_CAT = 39。A39。)。十三、盡可能的用UNIONALL 替換UNION 當(dāng)SQL語句需要UNION兩個查詢結(jié)果集合時,這兩個結(jié)果集合會以UNIONALL的方式被合并, 然后在輸出最終結(jié)果前進行排序. 如果用UNION ALL替代UNION, 這樣排序就不是必要了. 效率就會因此得到提高. 舉例: 低效: SELECT ACCT_NUM, BALANCE_AMT FROM DEBIT_TRANSACTIONS WHERE TRAN_DATE = 39。31DEC9539。 UNION SELECT ACCT_NUM, BALANCE_AMT FROM DEBIT_TRANSACTIONS WHERE TRAN_DATE = 39。31DEC9539。 高效: SELECT ACCT_NUM, BALANCE_AMT FROM DEBIT_TRANSACTIONS WHERE TRAN_DATE = 39。31DEC9539。 UNION ALL SELECT ACCT_NUM, BALANCE_AMT FROM DEBIT_TRANSACTIONS WHERE TRAN_DATE = 39。31DEC9539。十四、Order by語句建議ORDER BY語句決定了Oracle如何將返回的查詢結(jié)果排序。Order by語句對要排序的列沒有什么特別的限制,也可以將函數(shù)加入列中(象聯(lián)接或者附加等)。任何在Order by語句的非索引項或者有計算表達式都將降低查詢速度。 仔細檢查order by語句以找出非索引項或者表達式,它們會降低性能。解決這個問題的辦法就是重寫order by語句以使用索引,也可以為所使用的列建立另外一個索引,同時應(yīng)絕對避免在order by子句中使用表達式。十五、避免使用NOT 在查詢時經(jīng)常在where子句使用一些邏輯表達式,如大于、小于、等于以及不等于等等,也可以使用and(與)、or(或)以及not(非)。NOT可用來對任何邏輯運算符號取反。下面是一個NOT子句的例子:   ... where not (status =39。VALID39。)   如果要使用NOT,則應(yīng)在取反的短語前面加上括號,并在短語前面加上NOT運算符。NOT運算符包含在另外一個邏輯運算符中,這就是不等于()運算符。換句話說,即使不在查詢where子句中顯式地加入NOT詞,NOT仍在運算符中,見下例:   ... where status 39。INVALID39。   再看下面這個例子:   select * from employee where salary3000。   對這個查詢,可以改寫為不使用NOT:   select * from employee where salary3000 or salary3000。   雖然這兩種查詢的結(jié)果一樣,但是第二種查詢方案會比第一種查詢方案更快些。第二種查詢允許Oracle對salary列使用索引,而第一種查詢則不能使用索引。十六、使用DECODE函數(shù)來減少處理時間 使用DECODE函數(shù)可以避免重復(fù)掃描相同記錄或重復(fù)連接相同的表. 例如: SELECT COUNT(*),SUM(SAL) FROM EMP WHERE DEPT_NO = 0020 AND ENAME LIKE 39。SMITH%39。 SELECT COUNT(*),SUM(SAL) FROM EMP WHERE DEPT_NO = 0030 AND ENAME LIKE 39。SMITH%39。 可以用DECODE函數(shù)高效地得到相同結(jié)果 SELECT COUNT(DECODE(DEPT_NO,0020,39。X39。,NULL)) D0020_COUNT, COUNT(DECODE(DEPT_NO,0030,39。X39。,NULL)) D0030_COUNT, SUM(DECODE(DEPT_NO,0020,SAL,NULL)) D0020_SAL, SUM(DECODE(DEPT_NO,0030,SAL,NULL)) D0030_SAL FROM EMP WHERE ENAME LIKE 39。SMITH%39。 類似的,DECODE函數(shù)也可以運用于GROUP BY 和ORDER BY子句中.十七、刪除重復(fù)記錄DELETE FROM EMP E WHERE (SELECT MIN() FROM EMP X WHERE = )。 十八、如果可以使用where條件,盡量不要在having中限制數(shù)據(jù)十九、盡量不要使數(shù)據(jù)排序引起排序的條件 Order by Group by Union,intersect,minus Distinct二十、使用提示(Hints)對于表的訪問,可以使用兩種Hints:FULL 和 ROWID l FULL hint 告訴ORACLE使用全表掃描的方式訪問指定表. 例如: SELECT /*+ FULL(EMP) */ * FROM EMP WHERE EMPNO = 7893。 l ROWID hint 告訴ORACLE使用TABLE ACCESS BY ROWID的操作訪問表. 通常, 你需
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1