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

首頁 > 數(shù)據(jù)庫 > Oracle > 正文

Oracle Index索引無效的原因與解決方法

2024-08-29 14:01:31
字體:
供稿:網(wǎng)友

索引無效原因

最近遇到一個Oracle SQL語句的性能問題,修改功能之前的運行時間平均為0.3s,可是添加新功能后,時間達到了4~5s。雖然幾張表的數(shù)據(jù)量都比較大(都在百萬級以上),但是也都有正確創(chuàng)建索引,不知道到底慢在了哪里,下面展開調(diào)查。

經(jīng)過幾次排除,把問題范圍縮小在索引上,首先在確定索引本身沒有問題的前提下,考慮索引有沒有被使用到,那么新的問題來了,怎么知道指定索引是否被啟用。

判斷索引是否被執(zhí)行

1. 分析索引

即將索引至于監(jiān)控狀態(tài)下,對索引進行分析。如下對 ID_TT_SHOHOU_HIST_002 索引進行分析 

alter index ID_TT_SHOHOU_HIST_002 monitoring usage;

2. 查看v$object_usage視圖中記錄的信息

select * from v$object_usage;

Oracle,Index,索引無效

字段依次為: 

•INDEX_NAME --索引名

•TABLE_NAME --表名

•MONITORING --是否被監(jiān)控

• USED --是否被啟用 

•START_MONITORING --監(jiān)控開始時間

•END_MONITORING --監(jiān)控結(jié)束時間

如上圖,雖然索引已經(jīng)被引用,但是速度依舊很慢,莫非是雖然啟用了索引,但是又被其他的一些原因拖慢了速度,繼續(xù)調(diào)查。

調(diào)查途中,收集到一些Oracle 數(shù)據(jù)庫不走索引的原因分享給大家

不走索引的原因

1. 在索引列上使用函數(shù)時不會使用索引

例如常見的, TO_CHAR 、 TO_DATE 、 TO_NUMBER 、 TRUNC ...等等。

此時的解決辦法可以使用 函數(shù)索引 ,顧名思義就是把使用函數(shù)后的字段整體當成索引中的字段。

如下圖中的 TO_CHAR(SHOHOU_DATE, 'YYYYMMDD') 就是一個函數(shù)索引,因為日期字段中含有時分秒,進行日期比較的時候,必須轉(zhuǎn)化成固定的格式。 

CREATE INDEX ID_TT_SHOHOU_HIST_003ON TT_SHOHOU_HIST(DEL_FLG,TO_CHAR(SHOHOU_DATE, 'YYYYMMDD'), SHOHOU_ID)TABLESPACE SALESPA_INDEX

2. 索引的列進行隱式的類型轉(zhuǎn)換

SELECT * FROM TABLE WHERE INDEX_COLUM = 5

上面語句中的 INDEX_COLUM 字段類型為 VARCHAR2 ,這時就會發(fā)生隱式類型轉(zhuǎn)換,類似于 

SELECT * FROM TABLE WHERE TO_NUMBER(INDEX_COLUM) = 5

3. WHERE 子句中使用不等于操作

不等于操作包括: <> , != , NOT colum >= ? , NOT colum <= ? 

替代方式可以使用OR, colum <> 0 =====> colum > 0 or colum < 0;

4. 使用 IS NULL 和 IS NOT NULL

替代方式:函數(shù)索引

通過 nvl(b,c) 將為空的字段轉(zhuǎn)為不為空的c值,再在函數(shù)nvl(b,c)上建立函數(shù)索引

轉(zhuǎn)換前

SELECT * FROM A WHERE B = NULL

轉(zhuǎn)換后

SELECT * FROM A WHERE NVL(B,C) = C

5. 組合索引

組合索引:由多個列構(gòu)成的索引。如

CREATE INDEX INDEX_EMP ON EMP (COL1,COL2,COL3,...)

INDEX_EMP 則為復合索引, COL1 為引導列。進行查詢時,可以使用 WHERE COL1 = ? ,也可以使用 WHERE COL1 = ? AND COL2 = ? ,這樣的限制條件都會使用索引,但是 WHERE COL2 = ? ,不會使用索引,所以限制條件中包含引導列時,該限制條件才會使用組合索引。

經(jīng)過一番調(diào)查,我使用的SQL語句檢索條件中對時間列進行 TO_CHAR(TTSH.SHOHOU_DATE, 'YYYYMMDD') 格式化日期,去除掉時分秒。再建立函數(shù)索引后仍然沒有起到優(yōu)化加速的效果,仔細觀察發(fā)現(xiàn)在使用TO_CHAR格式化時間之后,又進行TO_DATE轉(zhuǎn)為時間格式和其他子查詢的字段進行比較。然后很快想到,建立一個 TO_DATE(TO_CHAR(TTSH.SHOHOU_DATE, 'YYYYMMDD'), 'YYYYMMDD') 這樣的函數(shù)索引,結(jié)果缺失提高了不少的運行速度,從4~5s縮短到了0.5s左右。

但是這只是在PL/SQL軟件中運行SQL提高了速度,實際項目運行仍然是4~5s,使用語句查看索引的使用狀況時,發(fā)現(xiàn)并沒有使用索引,但是在PL/SQL軟件中確實調(diào)用了索引,這至今都是未解之謎,如果有大神知道原因希望能幫我解答一下這個疑問。

既然不能自動調(diào)用,只能強制讓SQL走指定索引了,強制的方法如下

在 SELECT 語句后加入 /*+INDEX(TTSH ID_TT_SHOHOU_HIST_002)*/ ,其中 TTSH 是表的別名(當表有別名的時候,必須在索引前加入表的別名) 

SELECT /*+INDEX(TTSH ID_TT_SHOHOU_HIST_002)*/ TO_DATE(TO_CHAR(TTSH.SHOHOU_DATE, 'YYYYMMDD'), 'YYYYMMDD') AS SHOHOU_DATE FROM TT_SHOHOU_HIST TTSHWHERE ...

至此,SQL的效率問題已經(jīng)解決了,但是這不是最好的解決方案。

首先,目前的索引中已經(jīng)存在包含 TO_CHAR(TTSH.SHOHOU_DATE, 'YYYYMMDD') 的函數(shù)索引,又再創(chuàng)建一個 TO_DATE(TO_CHAR(TTSH.SHOHOU_DATE, 'YYYYMMDD'), 'YYYYMMDD') ,看著就很難受

其次,強制使用索引的方法需要在SQL中指定索引名,假如數(shù)據(jù)庫中的索引名發(fā)生變更,還需去更改SQL。

最好的方法是把索引字段的TO_DATE去掉,統(tǒng)一使用TO_CHAR的索引。

AND CAL.CALENDER = TO_DATE(TO_CHAR(TTSH.SHOHOU_DATE, 'YYYYMMDD'), 'YYYYMMDD')

上面的部分語句因為 CALENDER 字段是DATE類型,所以比較時使用了TO_DATE,其實只要把 CALENDER 轉(zhuǎn)化成CHAR類型就行了,雖然看起來要改動的地方很多,其實解決了更大的問題。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網(wǎng)的支持。


注:相關(guān)教程知識閱讀請移步到oracle教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
xxxxxxxxx欧美| 91激情在线观看| 青青久久aⅴ北条麻妃| 久久免费99精品久久久久久| 国产性一乱一性一伧一色| 欧美影片第一页| 免费男女羞羞的视频网站中文字幕妖精视频| 久久中文字幕一区二区三区| 欧美一区三区四区| 日韩美女在线看| 一道精品视频一区二区三区男同| 岛国一区二区在线观看| 国产激情在线视频| 国产精品久久久爽爽爽麻豆色哟哟| 亚洲 欧美综合在线网络| 久久99热狠狠色一区二区| 黄色一级影院| av福利网址| 欧美色网一区二区| av电影一区二区| 精品视频久久久久久久| 无码人妻精品一区二区蜜桃色欲| 99精品人妻无码专区在线视频区| 91精品推荐| 黑人狂躁日本妞一区二区三区| av成人资源网| 李宗瑞91在线正在播放| av一区在线播放| 亚洲高清在线免费| 18成人在线| 丝袜美腿亚洲色图| 精品国产91久久久久久久妲己| 精品视频一区三区九区| 91精品在线麻豆| 无码人妻丰满熟妇区五十路| 开心丁香婷婷深爱五月| 精品91在线| 亚洲视频综合| 免费观看欧美成人禁片| mm131丰满少妇人体欣赏图| 国产一区二区按摩在线观看| 国产毛片毛片毛片| 国产美女激情视频| 激情小说欧美色图| 日本五级黄色片| 69成人在线| 久久国产精品99久久久久久老狼| 欧美h片在线观看| 中文字幕亚洲日本| 99亚洲乱人伦aⅴ精品| 国产盗摄女厕一区二区三区| 日本精品久久久久影院| 欧美精品一区二区三区免费播放| 久久久久亚洲AV成人无在| www..69.hd| 亚洲不卡免费视频| www.超碰在线观看| 成人午夜私人影院| 欧美日韩一级在线观看| 69久久久久| 国产精品欧美大片| 午夜视频1000| 精品国产乱码久久久久久虫虫漫画| 亚洲av综合一区| 久久日韩精品一区二区五区| 午夜小视频在线观看| 久久影院模特热| 国产精品第二十页| 国产高清久久久久| 国产一区99| 99热这里只有精品在线| 日本中文字幕观看| 欧美午夜精品一区二区三区| 日本少妇高潮喷水xxxxxxx| 日韩精品国产一区二区| 成人精品亚洲| 免费萌白酱国产一区二区三区| 人妻 日韩精品 中文字幕| 亚洲一区二区三区美女| 久久综合丝袜日本网| 日韩高清中文字幕一区| 国产精品久久久久久久无码| 另类高清dbsm日本tvav| 久久久久国产免费免费| 激情五月婷婷小说| 五月婷婷在线播放| 日韩欧美亚洲天堂| 精品国产乱码久久久久久1区2区| 亚洲va久久久噜噜噜| 婷婷激情五月综合| 日本国产一区二区三区| 国产三区在线成人av| 国产日韩欧美亚洲一区| 1024手机在线观看你懂的| 四虎国产精品永久| 天天干天天操天天干天天操| 午夜影院韩国伦理在线| 特级特黄刘亦菲aaa级| 91免费国产视频网站| 亚洲欧美日韩久久精品| 成年人视频在线观看免费| 最近中文字幕在线中文高清版| 国产**成人网毛片九色| 欧美日韩一区在线观看| 欧美黄色免费网址| 最近免费中文字幕在线第一页| 一区二区三区欧美成人| 青青草久久伊人| 国产一级免费黄色片| 精品久久九九| 欧美国产一区二区在线| 在线不卡日本| 欧美黑人巨大| 麻豆国产欧美一区二区三区| 天天干 夜夜操| 免费大片黄在线| 在线观看免费视频污| 97在线视频免费看| 亚洲国产欧美日韩在线观看第一区| 欧美激情综合色综合啪啪| 性生活视频软件| 色黄视频在线| 欧美高清性xxxx| 男人的天堂亚洲在线| 久久精品aaaaaa毛片| 国产精品999在线观看| 91伦理视频在线观看| 欧美色图在线观看| 91精品婷婷国产综合久久性色| 国产精品美女黄网| 久久五月天小说| 国产美女免费视频| 国产精品午夜一区二区欲梦| 国产精品久久久久久久天堂第1集| 第四色成人网| 欧美制服第一页| 日韩一区二区免费视频| 五月激情六月丁香| 国内精品伊人久久| 午夜精品福利一区二区三区av| 日韩国产一区久久| 国产精品18久久久久久麻辣| 亚洲综合国产| av一区二区在线播放| 亚洲熟女乱色一区二区三区久久久| 国产日韩欧美在线一区| freexxx性亚洲精品| 好吊色欧美一区二区三区| 91精品啪在线观看国产60岁| 国内精品久久久久久久久电影网| 日韩精品在线电影| 韩剧1988免费观看全集| 亚洲一区二区三区xxx视频| 亚洲av无码一区二区三区网址| 久久一区二区三区国产精品| 日本成人片在线| 精品卡1卡2卡三卡免费网站| 国产人妻精品久久久久野外| 欧美日韩国产电影| 女同视频在线观看| 高清不卡一区| 奇米影视第四色777| 日本女人一区二区三区| 男女私大尺度视频| 丝袜足脚交91精品| 欧美日韩一区二区精品| 日av在线播放中文不卡| 91高清视频在线观看| 久久久av一区| 国产精品视频二区三区| 九九热在线视频观看这里只有精品| 亚洲综合在线网站| 亚洲视频综合在线| 国产午夜在线视频| 一本色道精品久久一区二区三区| 欧美视频精品在线观看| 66久久国产| 韩国美女久久| 久久一区二区三区超碰国产精品| 欧美成人精品欧美一级乱| 日韩精品999| 日韩精品色哟哟| 无遮挡亚洲一区| 蜜桃精品视频在线| 欧美少妇网站| 伊是香蕉大人久久| 日韩精品无码一区二区三区| wwww在线观看免费视频| 日韩精品久久久毛片一区二区| 欧美激情亚洲视频| 国产一级二级三级精品| 国产精品夫妻激情| caopeng视频| 精品视频一区二区观看| 北岛玲heyzo一区二区| h在线观看视频| 18精品爽国产三级网站| 欧美丰满熟妇xxxxx| 四虎国产成人精品免费一女五男| 日本一区二区综合亚洲| 99精品一区二区三区的区别| 欧美大成色www永久网站婷| 国产v片在线观看| 调教视频vk| 婷婷综合视频| 91精品久久久久久久| 免费在线看黄色片| 日本50路肥熟bbw| 精品综合久久久| 免费吸乳羞羞网站视频| 99久久久无码国产精品不卡| 91wwwcom在线观看| 7777精品伊人久久久大香线蕉的| 日韩大片免费在线观看| 日本熟妇人妻中出| 日韩av黄色网址| 成年人国产在线观看| 天天操夜夜操很很操| jizzzz日本| 亚洲在线成人精品| 九色在线视频| 亚洲视频高清| 欧美在线一区二区三区| 国产一区2区| 精品久久久久久中文字幕人妻最新| 一本大道熟女人妻中文字幕在线| 进去里视频在线观看| 日本高清精品| 日本午夜精品一区二区三区| 成人天堂yy6080亚洲高清| 中文字幕国语官网在线视频| 亚洲va欧美va人人爽成人影院| 中文字幕欧美精品在线| 久久精品性爱视频| 中文字幕精品无| 亚洲乱码久久| 女人天堂av手机在线| 亚洲宅男天堂在线观看无病毒| 国产无遮挡在线视频免费观看| 日韩在线视频一区| 中文精品无码中文字幕无码专区| 亚洲av无码精品一区二区| 色帝国亚洲欧美在线| 亚洲成人av| 亚洲专区一二三| 圆产精品久久久久久久久久久| 国产乱淫av免费| 一区在线免费观看| 日韩午夜激情视频| 国产精品福利观看| 欧美日韩亚洲在线观看| 欧美一区二区三区视频| 国产麻豆一精品一av一免费| 91精品国产99久久久久久红楼| 国产精品最新自拍| 欧美激情视频一区二区三区免费| 日韩欧美三级一区二区| 成人午夜视频在线观看| 在线看欧美视频| 99久久夜色精品国产网站| 福利片在线免费观看| 久热中文在线| 国内精品在线一区| 亚洲成人网上| 黄页大全在线免费观看| 成人免费视频播放| 少妇av一区二区| 国产一级特黄毛片| 亚洲第一免费播放区| 91精品视频一区二区| 欧美综合视频在线| 精品一区二区在线视频| 久久一区二区三| 人妻人人澡人人添人人爽| 中文字幕人妻一区二区三区视频| 视频污在线观看| 奇米视频888战线精品播放| 成人精品亚洲| 国产麻豆精品在线| 日本成人中文字幕在线| 又黄又www| 日韩免费va| 亚洲欧美一区二区原创| 亚洲成色777777在线观看影院| 欧美一区二区三区在| 97成人精品视频在线观看| 成人欧美一区二区| 性感女国产在线| 日韩精品一区二区三区老鸭窝| 免费女人黄页| 波多视频一区| 天天射狠狠干| 99国产精品久久久久久久成人| 一本一道久久a久久精品综合| 一区二区小视频| 男人插曲女人的视频| 免费黄色在线网站| 欧美黑人又粗大| 精品露脸国产偷人在视频| 欧美一区二区视频网站| 9191久久久久久久久久久| 欧美不卡在线一区二区三区| 91蝌蚪91九色| 羞羞视频在线观看一区二区| 精品亚洲乱码一区二区| 免费人成黄页在线观看忧物| 麻豆精品国产91久久久久久| 香蕉成人app免费看片| 国产精品白浆| 欧美特黄一级| 日韩有吗在线观看| 97精品国产一区二区三区| 国模一区二区| 国产网友自拍视频| 亚洲男人的天堂网站| 国产乱叫456在线| 成人免费av片| 国产一区二区成人| 国产999精品久久久久久绿帽| 91高清国产视频| 成年人视频网址| 一根才成人网| 丰满人妻一区二区三区免费视频| av男人天堂网| 精品国产精品三级精品av网址| 欧美成a人片免费观看久久五月天| 一色屋色费精品视频在线看| 国产精品久久久久久免费观看|