成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

有時Oracle不用索引來查找數據的原因

瀏覽:218日期:2023-11-15 08:58:01
當你運用 SQL 語言,向數據庫發布一條查詢語句時, Oracle 將伴隨產生一個“執行計劃”,也就是該語句將通過何種數據搜索方案執行,是通過全表掃描、還是通過索引搜尋等其它方式。搜索方案的選用與 ORACLE 的優化器息息相關。 SQL 語句的執行步驟。 1 語法分析 分析語句的語法是否符合規范,衡量語句中各表達式的意義。 2 語義分析 檢查語句中涉及的所有數據庫對象是否存在,且用戶有相應的權限。 3 視圖轉換 將涉及視圖的查詢語句轉換為相應的對基表查詢語句。 4 表達式轉換 將復雜的 SQL 表達式轉換為較簡單的等效連接表達式。 5 選擇優化器 不同的優化器一般產生不同的“執行計劃” 6 選擇連接方式 ORACLE 有三種連接方式,對多表連接 ORACLE 可選擇適當的連接方式。 7 選擇連接順序 對多表連接 ORACLE 選擇哪一對表先連接,選擇這兩表中哪個表做為源數據表。 8 選擇數據的搜索路徑 根據以上條件選擇合適的數據搜索路徑,如是選用全表搜索還是利用索引或是其他的方式。 9 運行“執行計劃”。 ORACLE 的優化器 ORACLE 有兩種優化器:基于規則的優化器( RBO , Rule Based Optimizer ),和基于代價的優化器( CBO , Cost Based Optimizer )。 RBO 自 ORACLE 6 版以來被采用,有著一套嚴格的使用規則,只要你按照它去寫 SQL 語句,無論數據表中的內容怎樣,也不會影響到你的“執行計劃”,也就是說對數據不“敏感”, ORACLE 公司已經不再發展這種技術了。 CBO 自 ORACLE 7 版被引入, ORACLE 自 7 版以來采用的許多新技術都是基于 CBO 的,如星型連接排列查詢,哈希連接查詢,和并行查詢等。 CBO 計算各種可能“執行計劃”的“代價”,即 cost ,從中選用 cost 最低的方案,作為實際運行方案。各“執行計劃”的 cost 的計算根據,依靠于數據表中數據的統計分布, ORACLE 數據庫本身對該統計分布并不清楚,須要分析表和相關的索引,才能搜集到 CBO 所需的數據。 一般而言, CBO 所選擇的“執行計劃”都不會比 RBO 的“執行計劃”差,而且相對而言, CBO 對程序員的要求沒有 RBO 那么苛刻,節省了程序員為了從多個可能的“執行計劃”中選擇一個最優的方案而花費的調試時間,但在某些場合下也會存在問題。 較典型的問題有:有時,表明明建有索引,但查詢過程顯然沒有用到相關的索引,導致查詢過程耗時漫長,占用資源巨大,問題到底出在哪兒呢?按照以下順序查找,基本上能發現原因所在。 查找原因的步驟 首先,我們要確定數據庫運行在何種優化模式下,相應的參數是: optimizer_mode 。可在 svrmgrl 中運行“ show parameter optimizer_mode' 來查看。 ORACLE V7 以來缺省的設置應是 'choose' ,即假如對已分析的表查詢的話選擇 CBO ,否則選擇 RBO 。假如該參數設為“ rule ”,則不論表是否分析過,一概選用 RBO ,除非在語句中用 hint 強制。 其次,檢查被索引的列或組合索引的首列是否出現在 PL/SQL 語句的 WHERE 子句中,這是“執行計劃”能用到相關索引的必要條件。 第三,看采用了哪種類型的連接方式。 ORACLE 的共有 Sort Merge Join ( SMJ )、 Hash Join ( HJ )和 Nested Loop Join ( NL )。在兩張表連接,且內表的目標列上建有索引時,只有 Nested Loop 才能有效地利用到該索引。 SMJ 即使相關列上建有索引,最多只能因索引的存在,避免數據排序過程。 HJ 由于須做 HASH 運算,索引的存在對數據查詢速度幾乎沒有影響。 第四,看連接順序是否答應使用相關索引。假設表 emp 的 deptno 列上有索引,表 dept 的列 deptno 上無索引, WHERE 語句有 emp.deptno=dept.deptno 條件。在做 NL 連接時, emp 做為外表,先被訪問,由于連接機制原因,外表的數據訪問方式是全表掃描, emp.deptno 上的索引顯然是用不上,最多在其上做索引全掃描或索引快速全掃描。 第五,是否用到系統數據字典表或視圖。由于系統數據字典表都未被分析過,可能導致極差的“執行計劃”。但是不要擅自對數據字典表做分析,否則可能導致死鎖,或系統性能下降。 第六,是否存在潛在的數據類型轉換。如將字符型數據與數值型數據比較, ORACLE 會自動將字符型用 to_number() 函數進行轉換,從而導致第六種現象的發生。 第七,是否為表和相關的索引搜集足夠的統計數據。對數據經常有增、刪、改的表最好定期對表和索引進行分析,可用 SQL 語句“ analyze table xxxx compute statistics for all indexes;' 。 ORACLE 把握了充分反映實際的統計數據,才有可能做出正確的選擇。第八,索引列的選擇性不高。 我們假設典型情況,有表 emp ,共有一百萬行數據,但其中的 emp.deptno 列,數據只有 4 種不同的值,如 10 、 20 、 30 、 40 。雖然 emp 數據行有很多, ORACLE 缺省認定表中列的值是在所有數據行均勻分布的,也就是說每種 deptno 值各有 25 萬數據行與之對應。假設 SQL 搜索條件 DEPTNO=10 ,利用 deptno 列上的索引進行數據搜索效率,往往不比全表掃描的高, ORACLE 理所當然對索引“視而不見”,認為該索引的選擇性不高。 但我們考慮另一種情況,假如一百萬數據行實際不是在 4 種 deptno 值間平均分配,其中有 99 萬行對應著值 10 , 5000 行對應值 20 , 3000 行對應值 30 , 2000 行對應值 40 。在這種數據分布圖案中對除值為 10 外的其它 deptno 值搜索時,毫無疑問,假如索引能被應用,那么效率會高出很多。我們可以采用對該索引列進行單獨分析,或用 analyze 語句對該列建立直方圖,對該列搜集足夠的統計數據,使 ORACLE 在搜索選擇性較高的值能用上索引。 第九,索引列值是否可為空( NULL )。假如索引列值可以是空值,在 SQL 語句中那些需要返回 NULL 值的操作,將不會用到索引,如 COUNT ( * ),而是用全表掃描。這是因為索引中存儲值不能為全空。 第十一,看是否有用到并行查詢( PQO )。并行查詢將不會用到索引。如我們想要用到 A 表的 IND_COL1 索引的話,可采用以下方式: “ SELECT /*+ INDEX ( A IND_COL1 ) */ * FROM A WHERE COL1 = XXX;'注重,注釋符必須跟在 SELECT 之后,且注釋中的“ + ”要緊跟著注釋起始符“ /* ”或“ -- ”,否則 hint 就被認為是一般注釋,對 PL/SQL 語句的執行不產生任何影響。 一種是 EXPLAIN TABLE 方式。用戶必須首先在自己的模式( SCHEMA )下,建立 PLAN_TABLE 表,執行計劃的每一步驟都將記錄在該表中,建表 SQL 腳本為在 ${ORACLE_HOME}/rdbms/admin/ 下的 utlxplan.sql 。 打開 SQL*PLUS ,輸入“ SET AUTOTRACE ON ”,然后運行待調試的 SQL 語句。在給出查詢結果后, ORACLE 將顯示相應的“執行計劃”,包括優化器類型、執行代價、連接方式、連接順序、數據搜索路徑以及相應的連續讀、物理讀等資源代價。 假如我們不能確定需要跟蹤的具體 SQL 語句,比如某個應用使用一段時間后,響應速度忽然變慢。我們這時可以利用 ORACLE 提供的另一個有力工具 TKPROF ,對應用的執行過程全程跟蹤。我們要先在系統視圖 V$SESSION 中,可根據 USERID 或 MACHINE ,查出相應的 SID 和 SERIAL# 。以 SYS 或其他有執行 DBMS_SYSTEM 程序包的用戶連接數據庫,執行“ EXECUTE DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION ( SID , SERIAL# , TRUE );”。 然后運行應用程序,這時在服務器端,數據庫參數“ USER_DUMP_DEST ”指示的目錄下,會生成 ora__xxxx.trc 文件,其中 xxxx 為被跟蹤應用的操作系統進程號。 應用程序執行完成后,用命令 tkprof 對該文件進行分析。命令示例:“ tkprof tracefile outputfile explain=userid/passWord' 。在操作系統 ORACLE 用戶下,鍵入“ tkprof ”,會有具體的命令幫助。分析后的輸出文件 outputfile 中,有每一條 PL/SQL 語句的“執行計劃”、 CPU 占用、物理讀次數、邏輯讀次數、執行時長等重要信息。根據輸出文件的信息,我們可以很快發現應用中哪條 PL/SQL 語句是問題的癥結所在。
標簽: Oracle 數據庫
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
免费成人小视频| 精品久久久网站| 欧美性视频一区二区三区| ●精品国产综合乱码久久久久| 99久久久免费精品国产一区二区| 日韩丝袜美女视频| 国产不卡视频在线播放| 91精品久久久久久蜜臀| 国产精品18久久久久久久久| 欧美另类变人与禽xxxxx| 另类成人小视频在线| 欧美视频你懂的| 精品一区二区三区香蕉蜜桃| 欧美伦理影视网| 国产麻豆精品theporn| 91精品国产一区二区三区香蕉 | 久久黄色级2电影| 色诱亚洲精品久久久久久| 五月婷婷色综合| 欧美制服丝袜第一页| 精品影视av免费| 欧美一区二区三区在线观看 | 99久久精品99国产精品| 久久麻豆一区二区| 欧美久久久久久| 中文字幕在线不卡| 日韩视频久久| 亚洲综合一二三区| 久久精品中文| 久久69国产一区二区蜜臀| 欧美一区二区三区影视| 99视频国产精品| 国产精品女主播av| 国产精品乱子乱xxxx| 日韩国产一二三区| 欧美日韩视频在线观看一区二区三区| 国产精品18久久久久久久网站| www国产精品av| 欧美日韩在线精品| 亚洲午夜国产一区99re久久| 色噜噜狠狠色综合欧洲selulu| 久久电影网站中文字幕| 欧美成人三级在线| 黑人一区二区| 亚洲国产综合视频在线观看| 在线观看视频91| 福利电影一区二区| 国产精品久久99| 久久精品成人| 国产风韵犹存在线视精品| 国产日本欧洲亚洲| 亚洲一区二区动漫| 老色鬼精品视频在线观看播放| 日韩一区二区三区电影在线观看| 欧美精品一卡| 午夜影院在线观看欧美| 欧美色图片你懂的| 99视频有精品| 亚洲男人电影天堂| 精品视频一区三区九区| 99re亚洲国产精品| 夜夜嗨av一区二区三区| 欧美日韩色一区| 91免费精品国自产拍在线不卡 | 亚洲激情一二三区| 欧美午夜在线一二页| 99久久精品国产一区| 亚洲尤物视频在线| 91精品国模一区二区三区| 狠狠入ady亚洲精品经典电影| 亚洲大片在线观看| 91精品国产高清一区二区三区 | 久久国产精品第一页| 久久九九全国免费| 欧美亚洲专区| 成人av在线播放网址| 樱花草国产18久久久久| 777精品伊人久久久久大香线蕉| 欧美三级视频| 久久精品国产亚洲高清剧情介绍| 久久亚洲一级片| 久久久久久亚洲精品杨幂换脸| 成人一区二区三区中文字幕| 一区二区视频在线| 日韩一区二区在线观看视频 | 男女av一区三区二区色多| 国产老妇另类xxxxx| 亚洲婷婷综合色高清在线| 欧美丝袜丝交足nylons图片| 欧美一区二区三区免费看| 日产精品久久久久久久性色| 国产婷婷色一区二区三区| 久久伊人亚洲| 欧美日韩亚洲一区二区三区在线 | 久久精品99国产精品日本| 国产午夜亚洲精品羞羞网站| 久久综合九色| 欧美性大战久久久久| 国产资源在线一区| 亚洲黄一区二区三区| 精品国产露脸精彩对白| 老司机午夜精品视频在线观看| 91麻豆国产在线观看| 麻豆精品在线看| 亚洲人成网站影音先锋播放| 日韩亚洲欧美在线观看| 久久久久久精| 国内久久视频| 国产成人亚洲精品青草天美| 亚洲成人www| 欧美激情综合五月色丁香| 欧美日韩午夜精品| 日韩一级精品| 国产99久久久精品| 婷婷国产v国产偷v亚洲高清| 国产精品另类一区| 欧美成人video| 欧美亚洲高清一区| 国产日韩精品视频一区二区三区| 成人av在线网站| 美女国产一区二区三区| 洋洋成人永久网站入口| 国产欧美一区二区精品秋霞影院| 91麻豆精品国产自产在线 | 欧美在线亚洲| 国产伦精品一区二区三区免费| 亚洲一区免费视频| 国产精品福利av| 久久久精品国产免费观看同学| 欧美日韩高清一区| 久久久人人人| 亚洲国产激情| 色综合天天综合网国产成人综合天| 国产一区二区视频在线| 日韩黄色免费电影| 亚洲一区自拍偷拍| 亚洲天堂精品在线观看| 中文字幕第一区| 久久婷婷国产综合国色天香| 91精品国产色综合久久ai换脸 | 欧美激情一区不卡| wwwwxxxxx欧美| 日韩视频一区在线观看| 在线不卡欧美精品一区二区三区| 91行情网站电视在线观看高清版| 夜夜嗨一区二区| 欧美日韩一区自拍| 91在线免费播放| 成人午夜av电影| 国产成人综合在线| 国产一区二区在线视频| 麻豆国产精品视频| 日产精品久久久久久久性色| 五月婷婷激情综合| 亚洲综合视频在线观看| 亚洲精品国产a| 一区二区三区精品视频在线| 日韩理论片一区二区| 国产精品家庭影院| 国产精品久久久久永久免费观看| 亚洲国产成人午夜在线一区| www久久精品| xfplay精品久久| 久久久一区二区三区捆绑**| 精品剧情v国产在线观看在线| 欧美一区二区在线免费观看| 91精品在线观看入口| 欧美日本国产视频| 欧美日本乱大交xxxxx| 欧美久久一二区| 欧美精品久久久久久久久老牛影院| 欧美亚洲国产一区二区三区va | 欧美精品一级| 色综合一区二区| 欧美 日韩 国产精品免费观看| 99国产精品国产精品毛片| www.日韩在线| 99这里只有久久精品视频| 91网站最新地址| 91蝌蚪porny| 欧美精品网站| 激情丁香综合| 一区二区日韩免费看| 亚洲欧美久久久| 色偷偷久久一区二区三区| 欧美一激情一区二区三区| 久久婷婷国产综合国色天香| 日韩精品中午字幕| 日韩一区二区三区电影在线观看| 欧美日韩国产一级片| 欧美日韩一区视频| 欧美人xxxx| 日韩美女一区二区三区| 久久亚洲精品小早川怜子| 中文字幕免费不卡在线| 香蕉免费一区二区三区在线观看 | 日本人妖一区二区| 亚洲成人免费影院| 日韩专区欧美专区| 日韩电影一区二区三区四区|