欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Oracle SQL 性能優化技巧

系統 2078 0

1. 用適合的 ORACLE 化器
???? ORACLE
化器共有 3

???? A RULE ( 基于 規則 ) b COST ( 基于成本 ) c CHOOSE ( 選擇 )

???? 置缺省的 化器,可以通 過對 init.ora 文件中 OPTIMIZER_MODE 參數的各 聲明,如 RULE COST CHOOSE ALL_ROWS FIRST_ROWS 你當然也在 SQL 或是會 (session) 級對 行覆蓋。

???? 了使用基于成本的 化器 (CBO Cost-Based Optimizer) 你必 須經 常運行 analyze 命令,以增加數據 中的 統計 信息 (object statistics) 的準確性。

???? 如果數據 化器模式 為選擇 (CHOOSE) ,那 么實際 化器模式將和是否運行 analyze 命令有 如果 table analyze 化器模式將自 CBO 反之,數據 將采用 RULE 形式的 化器。

在缺省情況下, ORACLE 采用 CHOOSE 化器, 了避免那些不必要的全表 (full table scan) 你必 盡量避免使用 CHOOSE 化器,而直接采用基于 規則 或者基于成本的 化器。


2.
訪問 Table 的方式
???? ORACLE
采用兩 種訪問 表中 記錄 的方式:

???? A 全表

????????? 全表 描就是 序地 訪問 表中 記錄 ORACLE 采用一次 入多個數據 (database block) 的方式 化全表 描。

???? B ROWID 訪問

????????? 你可以采用基于 ROWID 訪問 方式情況,提高 訪問 表的效率, ROWID 包含了表中 記錄 的物理位置信息。 ORACLE 采用索引 (INDEX) 實現 了數據和存放數據的物理位置 (ROWID) 系。通常索引提供了快速 訪問 ROWID 的方法,因此那些基于索引列的 查詢 就可以得到性 能上的提高。


3.
共享 SQL
????
了不重 解析相同的 SQL 句,在第一次解析之后, ORACLE SQL 句存放在內存中。 這塊 位于系 全局區域 SGA(system global area) 的共享池 (shared buffer pool) 中的內存可以被所有的數據 共享。 因此,當你 行一個 SQL ( 被稱 一個游 ) ,如果它和之前的 句完全相同, ORACLE 就能很快 得已 被解析的 句以及最好的 行路徑。 ORACLE 個功能大大地提高了 SQL 行性能并 省了內存的使用。

???? 可惜的是 ORACLE 對簡單 的表提供高速 (cache buffering) 個功能并不適用于多表 查詢

???? 數據 管理 init.ora 為這 個區域 置合適的參數,當 個內存區域越大,就可以保留更多的 句,當然被共享的可能性也就越大了。

???? 當你向 ORACLE 提交一個 SQL 句, ORACLE 會首先在 這塊 內存中 找相同的 句。 里需要注明的是, ORACLE 兩者采取的是一 種嚴 格匹配,要達成共享, SQL 句必 完全相同 ( 包括空格, 行等 )

???? 數據 管理 init.ora 為這 個區域 置合適的參數,當 個內存區域越大,就可以保留更多的 句,當然被共享的可能性也就越大了。

???? 共享的 句必 須滿 足三個條件:

???? A 字符 的比 當前被 行的 句和共享池中的 句必 完全相同。

???? B 兩個 句所指的 象必 完全相同:

???? C 兩個 SQL 句中必 使用相同的名字的 (bind variables)


4.
選擇 最有效率的表名 ( 只在基于 規則 化器中有效 )
???? ORACLE
的解析器按照從右到左的 FROM 子句中的表名,因此 FROM 子句中寫在最后的表 ( driving table) 將被最先 理。在 FROM 子句中包含多個表的情況下,你必 須選擇記錄 條數最少的表作 表。當 ORACLE 理多個表 會運用排序及合并的方式 接它 。首先, 描第一個表 (FROM 子句中最后的那個表 ) 對記錄進 行派序,然后 描第二個表 (FROM 子句中最后第二個表 ) ,最后將所有從第二個表中 索出的 記錄 與第一個表中合適 記錄進 行合并。

???? 如果有 3 個以上的表 查詢 那就需要 選擇 交叉表 (intersection table) 表, 交叉表是指那個被其他表所引用的表。


5.WHERE
子句中的
???? ORACLE
采用自下而上的 序解析 WHERE 子句,根據 個原理,表之 接必 寫在其他 WHERE 條件之前, 那些可以 過濾 掉最大數量 記錄 的條件必 寫在 WHERE 子句的末尾。


6.SELECT
子句中避免使用 ' * '
????
當你想在 SELECT 子句中列出所有的 COLUMN ,使用 動態 SQL 列引用 '*' 是一個方便的方法。不幸的是, 是一個非常低效的方法。 實際 上, ORACLE 在解析的 程中, 會將 '*' 依次 轉換 成所有的列名, 個工作是通 過查詢 數據字典完成的, 意味著將耗 更多的 時間


7.
減少 訪問 數據 的次數
????
SQL ORACLE 在內部 行了 多工作:解析 SQL 句,估算索引的利用率, 量, 數據 等等。由此可 ,減少 訪問 數據 的次數,就能 實際 上減少 ORACLE 的工作量。


8.
使用 DECODE 函數來減少 時間
????
使用 DECODE 函數可以避免重 復掃 描相同 記錄 或重 復連 接相同的表。


9.
整合 簡單 ,無 關聯 的數據 庫訪問
????
如果你有幾個 簡單 的數據 庫查詢語 句,你可以把它 整合到一個 查詢 ( 即使它 沒有 )


10.
除重 復記錄

11. TRUNCATE 替代 DELETE
????
除表中的 記錄時 ,在通常情況下, (rollback segments ) 用來存放可以被恢 的信息。 如果你沒有 COMMIT ORACLE 會將數據恢 除之前的狀 ( 準確地 是恢 除命令之前的狀況 )

???? 而當運用 TRUNCATE 段不再存放任何可被恢 的信息。當命令運行后,數據不能被恢 。因此很少的 源被 調 用, 時間 也會很短。


12.
盡量多使用 COMMIT
????
只要有可能,在程序中盡量多使用 COMMIT 這樣 程序的性能得到提高,需求也會因 COMMIT 放的 源而減少

???? COMMIT 放的 源:

???? A 段上用于恢 數據的信息。

???? B 、被程序 得的

???? C redo log buffer 中的空

???? D ORACLE 管理上述 3 種資 源中的內部花


13.
記錄 條數
????
和一般的 點相反, count(*) count(1) 稍快,當然如果可以通 索引 索, 索引列的 數仍舊是最快的。例如 COUNT(EMPNO)


14.
Where 子句替 HAVING 子句
????
避免使用 HAVING 子句, HAVING 只會在 索出所有 記錄 之后才 對結 果集 過濾 理需要排序, 總計 等操作。如果能通 WHERE 子句限制 記錄 的數目,那就能減少 方面的 開銷


15.
減少 表的 查詢
????
在含有子 查詢 SQL 句中,要特 注意減少 表的 查詢


16.
內部函數提高 SQL 效率。

17. 使用表的 (Alias)
????
當在 SQL 句中 接多個表 使用表的 名并把 名前 Column 上。 這樣 一來,就可以減少解析的 時間 并減少那些由 Column 引起的 錯誤


18.
EXISTS 替代 IN
????
多基于基 表的 查詢 中, 滿 足一個條件,往往需要 另一個表 接。在 這種 情況下,使用 EXISTS( NOT EXISTS) 通常將提高 查詢 的效率。


19.
NOT EXISTS 替代 NOT IN
????
在子 查詢 中, NOT IN 子句將 行一個內部的排序和合并。 在哪 情況下, NOT IN 都是最低效的 ( 查詢 中的表 行了一個全表遍 ) 了避免使用 NOT IN ,我 可以把它改寫成外 (Outer Joins) NOT EXISTS


20.
用表 接替 EXISTS
????
通常來 采用表 接的方式比 EXISTS 更有效率


21.
EXISTS DISTINCT
????
當提交一個包含一 多表信息 ( 比如部 表和雇 ) 查詢時 ,避免在 SELECT 子句中使用 DISTINCT 一般可以考 EXIST

Oracle SQL 性能優化技巧


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日韩在线观看中文 | 涩涩色中文综合亚洲 | 日本一级淫片1000部 | 天天看高清特色大片 | 亚洲欧美日韩精品久久亚洲区色播 | 五月激情六月 | 国产综合精品 | 羞羞哒哒视频 | 国产五月色婷婷六月丁香视频 | 久热久热 | 亚洲成a人片在线看 | 色婷婷综合久久久中文一区二区 | 免费视频在线看 | 欧美午夜影院 | 久久久久久国产精品mv | 国产精品高清在线 | 波多野结衣在线网址 | 久久青草国产免费观看 | 丝袜美腿一区二区三区动态图 | 精品国产成人在线 | 亚洲码专区 | 欧美精品第二页 | 被摁着灌浓精囚禁高h1v1 | 久久久久999 | 奇米第四色网站 | 欧美女人天堂 | 12306午夜被窝播播影院yw188 | 日色视频| 午夜在线观看免费视频 | 北岛玲亚洲一区在线观看 | 久久婷婷色香五月综合激情 | 天天影视插插 | 男女真实无遮挡xx00动态图120秒 | 欧美在线观看一区 | 成人福利在线视频 | 九七婷婷狠狠成人免费视频 | 久热这里只有精品视频6 | 色老师影院| 五月天在线影院 | 日韩精品久久一区二区三区 | 91成人精品|