亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Oracle > 正文

oracle 索引不能使用深入解析

2024-08-29 13:55:45
字體:
來源:轉載
供稿:網友
較典型的問題有:有時,表明明建有索引,但查詢過程顯然沒有用到相關的索引,導致查詢過程耗時漫長,占用資源巨大,問題到底出在哪兒呢?按照以下順序查找,基本上能發現原因所在。

查找原因的步驟
首先,我們要確定數據庫運行在何種優化模式下,相應的參數是:optimizer_mode??稍趕vrmgrl中運行“showparameteroptimizer_mode"來查看。ORACLEV7以來缺省的設置應是"choose",即如果對已分析的表查詢的話選擇CBO,否則選擇RBO。如果該參數設為“rule”,則不論表是否分析過,一
概選用RBO,除非在語句中用hint強制。

其次,檢查被索引的列或組合索引的首列是否出現在PL/SQL語句的WHERE子句中,這是“執行計劃”能
用到相關索引的必要條件。

第三,看采用了哪種類型的連接方式。ORACLE的共有SortMergeJoin(SMJ)、HashJoin(HJ)和NestedLoopJoin(NL)。在兩張表連接,且內表的目標列上建有索引時,只有NestedLoop才能有效地利用到該索引。SMJ即使相關列上建有索引,最多只能因索引的存在,避免數據排序過程。HJ由于須做HASH運算,索引的存在對數據查詢速度幾乎沒有影響。

第四,看連接順序是否允許使用相關索引。假設表emp的deptno列上有索引,表dept的列deptno上無索引,WHERE語句有emp.deptno=dept.deptno條件。在做NL連接時,emp做為外表,先被訪問,由于連接機制原因,外表的數據訪問方式是全表掃描,emp.deptno上的索引顯然是用不上,最多在其上
做索引全掃描或索引快速全掃描。

第五,是否用到系統數據字典表或視圖。由于系統數據字典表都未被分析過,可能導致極差的“執行計劃”。但是不要擅自對數據字典表做分析,否則可能導致死鎖,或系統性能下降。

第六,是否存在潛在的數據類型轉換。如將字符型數據與數值型數據比較,ORACLE會自動將字符型用to_number()函數進行轉換,從而導致第六種現象的發生。

第七,是否為表和相關的索引搜集足夠的統計數據。對數據經常有增、刪、改的表最好定期對表和索引進行分析,可用SQL語句“analyzetablexxxxcomputestatisticsforallindexes;"。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(AIND_COL1)*/*FROMAWHERECOL1=XXX;"注意,注釋符必須跟在SELECT之后,且注釋中的“+”要緊跟著注釋起始符“/*”或“--”,否則hint就被認為是一般注釋,對PL/SQL語句的執行不產生任何影響。一種是EXPLAINTABLE方式。用戶必須首先在自己的模式(SCHEMA)下,建立PLAN_TABLE表,執行計劃的每一步驟都將記錄在該表中,建表SQL腳本為在${ORACLE_HOME}/rdbms/admin/下的utlxplan.sql
。

打開SQL*PLUS,輸入“SETAUTOTRACEON”,然后運行待調試的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對該文件進行分析。命令示例:“tkproftracefileoutputfileexplain=userid/password"。在操作系統ORACLE用戶下,鍵入“tkprof”,會有詳細的命令幫助。分析后的輸出文件outputfile中,有每一條PL/SQL語句的“執行計劃”、CPU占用、物理讀次數、邏輯讀次數、執行時長等重要信息。根據輸出文件的信息,我們可以很快發現應用中哪條PL/SQL語句是問題的癥結所在.
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美成人免费大片| 国产精品一区二区久久国产| 日韩av综合中文字幕| 亚州精品天堂中文字幕| 中文.日本.精品| 成人在线观看视频网站| 91精品国产综合久久久久久蜜臀| 国产成人短视频| 国产成人精品免费久久久久| 中文字幕亚洲欧美| 色综合视频一区中文字幕| 国产成人一区三区| 中文字幕精品av| 欧美精品亚州精品| 久久香蕉国产线看观看av| 国产精品久久久91| 亚洲精品资源美女情侣酒店| 国产美女久久精品香蕉69| 国产一区二区三区高清在线观看| 久久黄色av网站| 亚洲视频自拍偷拍| 成人动漫网站在线观看| 亚洲色图欧美制服丝袜另类第一页| 亚洲成人1234| 日韩免费av一区二区| 中文字幕不卡av| 91免费版网站入口| 欧美有码在线视频| 精品亚洲一区二区三区四区五区| 久久久久一本一区二区青青蜜月| 日韩激情视频在线播放| 国产一区二区三区在线观看网站| 精品久久久久久久久久国产| 日韩风俗一区 二区| 亚洲人成电影在线观看天堂色| 欧美日韩国产一区中文午夜| 国内偷自视频区视频综合| www.亚洲一区| 亚洲第一视频在线观看| 亚洲天堂男人的天堂| 国产综合福利在线| 成人网在线免费观看| 国产在线视频2019最新视频| 欧美xxxx18国产| 亚洲精品中文字幕av| 精品成人69xx.xyz| 亚洲免费av电影| 久久精品99久久久久久久久| 91社区国产高清| 久久久久久亚洲精品不卡| 亚洲国产天堂久久国产91| 亚洲视频国产视频| 亚洲精品一区中文字幕乱码| 91精品国产乱码久久久久久久久| 国产男女猛烈无遮挡91| 国产精品第七影院| 精品久久久久久中文字幕大豆网| 国产精品视频中文字幕91| 日韩欧美黄色动漫| 在线观看视频亚洲| 午夜精品久久久久久久99黑人| 久久久av电影| 在线成人一区二区| 国产亚洲精品久久久优势| 久久激情视频免费观看| 国产精品色视频| 国产精品久久国产精品99gif| 国产亚洲一区精品| 欧美性猛xxx| 91久久精品久久国产性色也91| 精品久久久久人成| 亚洲国产精品久久久久秋霞蜜臀| 国产精品久久久一区| 日本精品久久久久久久| 在线观看国产欧美| 国产成人精品一区二区三区| 国产精品久久久久久久久久久不卡| 亚洲国产精品久久久久久| 亚洲爱爱爱爱爱| 亚洲人成网站777色婷婷| 成人午夜小视频| 日韩欧美大尺度| 亚洲成人a**站| 亚洲一二在线观看| 91视频国产一区| 亚洲精品欧美日韩专区| 亚洲无线码在线一区观看| 欧美亚州一区二区三区| 国产日韩欧美在线播放| 欧美一性一乱一交一视频| 91爱视频在线| 国内精品久久久久影院 日本资源| 日韩在线观看av| 隔壁老王国产在线精品| 国产91精品久久久久久久| 日韩麻豆第一页| 亚洲国产精彩中文乱码av在线播放| 久久久av网站| 亚洲女人被黑人巨大进入| 久久久久久久久久久人体| 91精品中文在线| 欧美成人免费一级人片100| 日韩av在线一区二区| 国产精品美腿一区在线看| 国产丝袜一区二区三区| 美日韩丰满少妇在线观看| 成人做爰www免费看视频网站| 欧美电影免费观看| 久久国产一区二区三区| 久久免费国产视频| 日韩毛片在线观看| 亚洲精品在线视频| 夜夜嗨av色一区二区不卡| 亚洲欧美精品伊人久久| 中文字幕在线看视频国产欧美在线看完整| 国产69久久精品成人| 韩国19禁主播vip福利视频| 国产精品无av码在线观看| 久久免费视频在线| 欧美高清无遮挡| 欧美一级淫片aaaaaaa视频| 亚洲人成欧美中文字幕| 国产精品视频网站| 国产精品成人在线| 国产精品久久久久久久久粉嫩av| 亚洲国产中文字幕久久网| 精品人伦一区二区三区蜜桃免费| 色婷婷综合成人| 亚洲免费视频在线观看| 国产精品视频精品视频| 91手机视频在线观看| 国产亚洲a∨片在线观看| 国产精品成熟老女人| 亚洲国产成人精品女人久久久| 92国产精品久久久久首页| 免费99精品国产自在在线| 亚洲自拍另类欧美丝袜| 国产偷国产偷亚洲清高网站| 亚洲午夜精品视频| 成人a级免费视频| 亚洲三级黄色在线观看| 久久久久亚洲精品| 欧美日韩色婷婷| 久久久久国产精品免费| 国产狼人综合免费视频| 2019中文在线观看| 日韩精品黄色网| 欧美一级大片在线免费观看| 国内精品400部情侣激情| 中文字幕av一区二区| 国产精品久久久一区| 中文字幕一区二区三区电影| 亚洲成在人线av| 国产精品久久久久免费a∨大胸| 97碰碰碰免费色视频| 综合av色偷偷网| 2019中文字幕在线| 久久精品国产欧美激情| 日韩美女视频在线观看| 久久久久久中文| 国产成人精品久久二区二区| 精品国产乱码久久久久久虫虫漫画| 原创国产精品91| 色偷偷亚洲男人天堂|