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

正文內(nèi)容

中國(guó)聯(lián)通北六省融合項(xiàng)目應(yīng)用性能與安全開(kāi)發(fā)建議v-資料下載頁(yè)

2025-08-24 08:11本頁(yè)面

【導(dǎo)讀】北六融合項(xiàng)目應(yīng)用性能與安全開(kāi)發(fā)建議。.通過(guò)應(yīng)用綁定變量提升業(yè)務(wù)性能,降低數(shù)據(jù)庫(kù)消耗..............5. .總是使用索引的第一個(gè)列....

  

【正文】 MP_CLASS)上有幾千個(gè)重復(fù)的值 . 排序及合并就會(huì)成為一種不必要的負(fù)擔(dān) . 在這種情況下 ,你希望使優(yōu)化器屏蔽掉 EMP_CLASS 索引 . 用下面的方案就可以解決問(wèn)題 . SELECT ENAME FROM EMP WHERE EMP_TYPE = ‘A39。 AND EMP_CLASS||39。39。 = ‘X39。 . 避免在索引列上使用計(jì)算 (嚴(yán)格要求) WHERE 子句中,如果索引列是函數(shù)的一部分.優(yōu)化器將不使用索引而使用全表掃 描. 舉例 : ? 低效: SELECT ? FROM DEPT WHERE SAL * 12 25000。 ? 高效 : SELECT ? FROM DEPT WHERE SAL 25000/12。 注 : 北六融合項(xiàng)目應(yīng)用性能與安全開(kāi)發(fā)建議 32 這是一個(gè)非常實(shí)用的規(guī)則,請(qǐng)務(wù)必牢記 . 自動(dòng)選擇索引 (自查方法) 如果表中有兩個(gè)以上(包括兩個(gè))索引,其中有一個(gè)唯一性索引,而其他是非唯一性. 在這種情況下, ORACLE 將使用唯一性索引而完全忽略非唯一性索引. 舉例 : SELECT ENAME FROM EMP WHERE EMPNO = 2326 AND DEPTNO = 20 。 這里,只有 EMPNO 上的索引是唯一性的,所以 EMPNO 索引將用來(lái)檢索記錄. TABLE ACCESS BY ROWID ON EMP INDEX UNIQUE SCAN ON EMP_NO_IDX . 避免在索引列上使用 NOT(嚴(yán)格要求) 通常,我們要避免在索引列上使用 NOT, NOT 會(huì)產(chǎn)生在和在索引列上使用函數(shù)相同的 影響 . 當(dāng) ORACLE”遇到” NOT,他就會(huì)停止使用索引轉(zhuǎn)而執(zhí)行全表掃描 . 舉例 : ? 低效 : (這里 ,不使用索引 ) SELECT ? FROM DEPT WHERE NOT DEPT_CODE = 0。 ? 高效 : (這里 ,使用了索引 ) 北六融合項(xiàng)目應(yīng)用性能與安全開(kāi)發(fā)建議 33 SELECT ? FROM DEPT WHERE DEPT_CODE 0。 需要注意的是 ,在某些時(shí)候 , ORACLE 優(yōu)化器會(huì)自動(dòng)將 NOT 轉(zhuǎn)化成相對(duì)應(yīng)的關(guān)系操作符 . NOT to = NOT = to NOT to = NOT = to 注 : 我做了一些測(cè)試 : SQL select * from emp where NOT empno 1。 no rows selected Execution Plan 0 SELECT STATEMENT Optimizer=CHOOSE 1 0 TABLE ACCESS (BY INDEX ROWID) OF 39。EMP39。 2 1 INDEX (RANGE SCAN) OF 39。EMPNO39。 (UNIQUE) SQL select * from emp where empno = 1。 no rows selected Execution Plan 0 SELECT STATEMENT Optimizer=CHOOSE 1 0 TABLE ACCESS (BY INDEX ROWID) OF 39。EMP39。 2 1 INDEX (RANGE SCAN) OF 39。EMPNO39。 (UNIQUE) 北六融合項(xiàng)目應(yīng)用性能與安全開(kāi)發(fā)建議 34 兩者的效率完全一樣,也許這符合作者關(guān) 于” 在某些時(shí)候 , ORACLE 優(yōu)化器會(huì)自動(dòng)將 NOT 轉(zhuǎn)化成相對(duì)應(yīng)的關(guān)系操作符” 的觀點(diǎn). . 用 大于等于 替代 大于方法提升速度 (建議) 用 =替代 如果 DEPTNO 上有一個(gè)索引 , ? 高效 : SELECT * FROM EMP WHERE DEPTNO =4 ? 低效 : SELECT * FROM EMP WHERE DEPTNO 3 兩者的區(qū)別在于 , 前者 DBMS 將直接跳到第一個(gè) DEPT 等于 4 的記錄而后者將首先定位到 DEPTNO=3 的記錄并且向前掃描到第一個(gè) DEPT 大于 3的記錄 . . 用 聚合 方式 替換 或運(yùn)算提升速度 (建議) 用 UNION 替換 OR (適用于索引列 ) 通常情況下 , 用 UNION 替換 WHERE 子句中的 OR 將會(huì)起到較好的效果 . 對(duì)索引列使用 OR 將造成全表掃描 . 注意 , 以上規(guī)則只針對(duì)多個(gè)索引列有效 . 如果有column 沒(méi)有被索引 , 查詢(xún)效率可能會(huì)因?yàn)槟銢](méi)有選擇 OR 而降低 . 在下面的例子中 , LOC_ID 和 REGION 上都建有索引 . ? 高效 : SELECT LOC_ID , LOC_DESC , REGION FROM LOCATION 北六融合項(xiàng)目應(yīng)用性能與安全開(kāi)發(fā)建議 35 WHERE LOC_ID = 10 UNION SELECT LOC_ID , LOC_DESC , REGION FROM LOCATION WHERE REGION = “MELBOURNE” ? 低效 : SELECT LOC_ID , LOC_DESC , REGION FROM LOCATION WHERE LOC_ID = 10 OR REGION = “MELBOURNE” 如果你堅(jiān)持要用 OR, 那就需要返回記錄最少的索引列寫(xiě)在最前面 . 注意 : WHERE KEY1 = 10 (返回最少記錄 ) OR KEY2 = 20 (返回最多記錄 ) ORACLE 內(nèi)部將以上轉(zhuǎn)換為 WHERE KEY1 = 10 AND ((NOT KEY1 = 10) AND KEY2 = 20) 注 : 下面的測(cè)試數(shù)據(jù)僅供參考 : (a = 1003 返回一條記錄 , b = 1 返回 1003 條記錄 ) SQL select * from unionvsor /*1st test*/ 2 where a = 1003 or b = 1。 1003 rows selected. Execution Plan 0 SELECT STATEMENT Optimizer=CHOOSE 北六融合項(xiàng)目應(yīng)用性能與安全開(kāi)發(fā)建議 36 1 0 CONCATENATION 2 1 TABLE ACCESS (BY INDEX ROWID) OF 39。UNIONVSOR39。 3 2 INDEX (RANGE SCAN) OF 39。UB39。 (NONUNIQUE) 4 1 TABLE ACCESS (BY INDEX ROWID) OF 39。UNIONVSOR39。 5 4 INDEX (RANGE SCAN) OF 39。UA39。 (NONUNIQUE) Statistics 0 recursive calls 0 db block gets 144 consistent gets 0 physical reads 0 redo size 63749 bytes sent via SQL*Net to client 7751 bytes received via SQL*Net from client 68 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 1003 rows processed SQL select * from unionvsor /*2nd test*/ 2 where b = 1 or a = 1003 。 1003 rows selected. Execution Plan 0 SELECT STATEMENT Optimizer=CHOOSE 1 0 CONCATENATION 2 1 TABLE ACCESS (BY INDEX ROWID) OF 39。UNIONVSOR39。 3 2 INDEX (RANGE SCAN) OF 39。UA39。 (NONUNIQUE) 4 1 TABLE ACCESS (BY INDEX ROWID) OF 39。UNIONVSOR39。 5 4 INDEX (RANGE SCAN) OF 39。UB39。 (NONUNIQUE) 北六融合項(xiàng)目應(yīng)用性能與安全開(kāi)發(fā)建議 37 Statistics 0 recursive calls 0 db block gets 143 consistent gets 0 physical reads 0 redo size 63749 bytes sent via SQL*Net to client 7751 bytes received via SQL*Net from client 68 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 1003 rows processed SQL select * from unionvsor /*3rd test*/ 2 where a = 1003 3 union 4 select * from unionvsor 5 where b = 1。 1003 rows selected. Execution Plan 0 SELECT STATEMENT Optimizer=CHOOSE 1 0 SORT (UNIQUE) 2 1 UNIONALL 3 2 TABLE ACCESS (BY INDEX ROWID) OF 39。UNIONVSOR39。 4 3 INDEX (RANGE SCAN) OF 39。UA39。 (NONUNIQUE) 5 2 TABLE ACCESS (BY INDEX ROWID) OF 39。UNIONVSOR39。 6 5 INDEX (RANGE SCAN) OF 39。UB39。 (NONUNIQUE) 北六融合項(xiàng)目應(yīng)用性能與安全開(kāi)發(fā)建議 38 Statistics 0 recursive calls 0 db block gets 10 consistent gets 0 physical reads 0 redo size 63735 bytes sent via SQL*Net to client 7751 bytes received via SQL*Net from client 68 SQL*Net roundtrips to/from client 1 sorts (memory) 0 sorts (disk) 1003 rows processed 用 UNION 的效果可以從 consistent gets 和 SQL*NET 的數(shù)據(jù)交換量的減少看出 . 用 IN 來(lái)替換 OR(建議) 下面的查詢(xún)可以被更有效率的語(yǔ)句替換 : ? 低效 : SELECT?. FROM LOCATION WHERE LOC_ID = 10 OR LOC_ID = 20 OR LOC_ID = 30 ? 高效 SELECT? FROM LOCATION WHERE LOC_IN IN (10,20,30)。 北六融合項(xiàng)目應(yīng)用性能與安全開(kāi)發(fā)建議 39 注 : 這是一條簡(jiǎn)單易記的規(guī)則,但是實(shí)際的執(zhí)行效果還須檢驗(yàn),在 ORACLE8i 下,兩者的執(zhí)行路徑似乎是相同的. . 避免在索引列上使用 IS NULL和 IS NOT NULL (嚴(yán)格要求) 避免在索引中使用任何可以為空的列, ORACLE 將無(wú)法使用該索引 .對(duì)于單列索引,如果列包 含空值,索引中將不存在此記錄 . 對(duì)于復(fù)合索引,如果每個(gè)列都為空,索引中同樣不存在此記錄 .
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1