亚洲香蕉成人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ā)表
7878视频在线观看| 国产精品久久免费视频| 精品少妇一区| 久久精品综合网| 91网在线看| av黄色在线网站| 亚洲成人资源在线| 九七影院97影院理论片久久| 色狼人综合干| 精品69视频一区二区三区Q| 蜜桃av色综合| 精品久久久久久久久久久| 黑人糟蹋人妻hd中文字幕| 精品国产一区二区三区日日嗨| 亚洲欧洲日产国产网站| 亚洲日本成人| 免费视频网站www| 亚洲一二三四2021不卡| 亚洲一二三区在线观看| 日韩欧美国产成人| 国产喷水吹潮视频www| 欧美亚洲日本一区二区三区| 亚洲国产另类 国产精品国产免费| 国产精品国产精品国产专区不片| www.精品| 亚洲av无码一区东京热久久| 一本久久综合亚洲鲁鲁五月天| 亚洲 欧美 日韩系列| 国产日韩欧美中文字幕| 色先锋av男人资源先锋影院| 被下部羞羞漫画| 星空影院最新电视剧免费观看| 成人av国产| 成年人国产在线观看| 欧美国产极速在线| 日韩在线免费视频| av成人动漫| 五月天av在线播放| 国产精品视频一| 成本人h片动漫网站在线观看| 久久er精品视频| 日韩不卡高清视频| 欧美性猛交xxxx乱| 一分钟免费观看视频播放www| 国产精品亚洲天堂| 精品福利免费观看| 亚洲国产不卡| 二区在线观看| 成人av免费在线观看| 挪威xxxx性hd极品| 亚洲韩国精品一区| 99久久99热久久精品免费看| 欧美视频中文字幕在线| 国产精品pans私拍| 国产中文字幕精品| 欧美在线一级va免费观看| 欧美女人交a| www.男人天堂网| 国产麻豆一区二区三区精品视频| 欧美中文字幕不卡| 蜜臀av免费一区二区三区| 飘雪影院手机免费高清版在线观看| 小小水蜜桃在线观看| 色偷偷偷亚洲综合网另类| 国产孕妇孕交大片孕| 91在线视频国产| 午夜国产欧美理论在线播放| 久久久久久久人妻无码中文字幕爆| 4438成人网| 国产精品女人毛片| 日韩精品一区二| 最近中文字幕一区二区| 日本精品一区二区三区四区| 在线观看日本网站| 久久网中文字幕| 91牛牛免费视频| 99视频这里有精品| 久久久久久日本一区99| 手机看片福利盒子久久| 一级黄色高清视频| 日本综合在线观看| √新版天堂资源在线资源| 99视频超级精品| www.狠狠插| 日本一区二区三区视频| 欧美色婷婷久久99精品红桃| 欧美一级在线免费| 豆国产97在线 | 亚洲| 亚洲综合欧美激情| 色偷偷免费视频| 国产农村妇女精品一二区| 成 年 人 黄 色 大 片大 全| 精品99久久久久成人网站免费| 国产人妖在线观看| 精品国产人妻一区二区三区| 无遮挡aaaaa大片免费看| 欧美午夜aaaaaa免费视频| 欧美成人在线网站| 亚洲tv在线| 久久五月天色综合| 欧美日韩亚洲国产| 99精品欧美一区二区三区综合在线| gv天堂gv无码男同在线观看| 国产69精品久久久久按摩| 九色丨porny丨| 国产成a人无v码亚洲福利| 国产一区二区在线观| 日韩一卡二卡三卡四卡| 久久婷婷久久一区二区三区| 欧美影院久久久| 欧美天堂亚洲电影院在线播放| 99成人国产精品视频| 欧美aa国产视频| 欧美人一级淫片a免费播放| 中文字幕一区二区三区乱码不卡| 三级免费网站| 一区二区三区在线视频111| 91久久免费观看| 日韩一区二区三区四区视频| 亚洲精品国产a久久久久久| 国产成人av一区二区| 国产精品乱人伦一区二区| 色先锋影音岛国av资源| 亚洲欧美一区二区三区四区五区| 欧美婷婷久久五月精品三区| 在线观看免费毛片| 欧美成人性网| 99久精品视频在线观看视频| 一区二区免费不卡在线| 黄色三级电影网| 神马影院一区二区三区| 国语对白精品一区二区| 波多野结衣中文字幕久久| 在线观看免费看片| 你懂的好爽在线观看| 亚洲乱码久久| 欧美男男激情videos| 在线精品国产成人综合| 91官网在线免费观看| 欧美午夜精品久久久久免费视| 亚洲视频第一页| 欧美做暖暖视频| 日韩激情一二三区| 在线播放日本| 日本午夜视频在线观看| 欧美最猛黑人xxxxx猛交| 三级av网站| 亚洲精品久久久久| 日韩视频―中文字幕| 日本亚洲欧美| 免费黄色片在线观看| 精品国产一区二区三区四区精华| 18毛片免费看| 国产剧情av在线| 亚洲图色中文字幕| 性久久久久久久久| 一本加勒比北条麻妃| 成人午夜在线影视| 少妇高潮露脸国语对白| yw视频在线观看| 亚洲乱码精品一二三四区日韩在线| 最近最好的中文字幕2019免费| 免费97视频在线精品国自产拍| www.天天射| 欧美日韩aaa| 欧美一区二区大胆人体摄影专业网站| 51精品国产人成在线观看| 日韩一二三区不卡在线视频| 国产精品国产自产拍在线| 在线观看www91| 一区二区国产视频| 五月婷婷色综合| 日韩中文字幕1| 日本午夜精品视频在线观看| 亚洲风情在线资源站| 欧美video巨大粗暴18| 中文在线不卡| 精品人妻无码一区二区色欲产成人| 国产va免费精品高清在线观看| 欧美成免费一区二区视频| 中文字幕日韩精品一区| 黄色网址在线免费看| 成人aaaa免费全部观看| 国产99久久久精品| 欧洲福利电影| 一本精品一区二区三区| 黄色网址视频在线观看| 老司机免费视频| 日韩电影免费在线观看网站| 性猛交xxxx乱大交孕妇印度| 国产成人精品免高潮在线观看| 欧美人成免费网站| 国产男女裸体做爰爽爽| 麻豆网址在线观看| 五十路亲子中出中文字幕| 欧美不卡激情三级在线观看| 国产成人a人亚洲精品无码| 亚洲欧美日韩直播| 韩国三级中文字幕hd久久精品| 国内精品小视频在线观看| 国产伊人精品| 国产成人精品网站| 亚洲综合区在线| 国产毛片欧美毛片久久久| 欧美日韩国产区一| 性久久久久久久久久久久久久| 美女扒开大腿让男人桶| 欧美网站免费观看| 国产一区二区99| 激情五月婷婷网| 成人在线视频播放| 亚洲人成电影网站色…| 午夜一区二区三区视频| 欧美bbbbxxxx| 妞干网在线观看视频| 亚洲国产日韩一区| 亚洲综合首页| 国产精品视频免费播放| 精品视频一区二区三区| 一本久久a久久免费精品不卡| 国产午夜福利100集发布| 国产精品理人伦一区二区三区| 在线观看免费视频综合| 蜜臀av粉嫩av懂色av| 国产精品免费一区二区三区都可以| 91福利在线看| www.成人av.com| 国产91露脸合集magnet| 亚洲xxx自由成熟| 69中国xxxxxxxxx69| 国产精品h片在线播放| 都市激情久久久久久久久久久| 国产亚洲精aa在线看| 四虎影视在线观看2413| av在线播放免费| 超碰aⅴ人人做人人爽欧美| 国产999精品视频| 最新91视频| 欧美女王vk| 国产91精品视频在线观看| 超碰在线免费公开| 热re66久久精品国产99re| 亚洲成av人片在线观看| 成人手机在线免费视频| 在线观看91精品国产入口| 精品国偷自产在线| 成人福利视频在线看| 欧美国产日本韩| 少妇人妻好深好紧精品无码| 好男人中文字幕官网| 美足av综合网| 中文成人激情娱乐网| 日韩黄色大片网站| 精品播放一区二区| 国产婷婷一区二区三区| 久久久久久黄| 成人激情四射网| 极品裸体白嫩激情啪啪国产精品| 国产在线成人精品午夜| 性欧美gay| 精品人妻一区二区三区视频| www.久久国产| 久久99精品久久久久久动态图| 91猫先生在线| 黄色片在线免费观看| 欧美女优在线视频| 国产又黄又猛又爽| 国产黄色91视频| 91久久久久久久久久| 精品中文av资源站在线观看| 欧美自拍偷拍网| 日本欧美高清| 国产成人免费精品| 加勒比海盗1在线观看免费国语版| 精品99re| 亚洲aaa视频| 亚洲高清不卡一区| 日韩一区不卡| 另类视频在线观看+1080p| 日韩电影网址| 91视频在线网站| 影音先锋成人在线电影| 在线欧美不卡| 欧美日韩精品免费观看视欧美高清免费大片| 亚洲成人福利在线| gogogo高清在线观看一区二区| 中文在线一区二区| 国产日本欧美一区二区| 在线观看国产视频| 精品久久久久久亚洲国产300| xxxx视频在线观看| 破处女黄色一级片| 国产精品久久综合| 91精品视频免费观看| 青青草97国产精品免费观看| 先锋av资源网| 日韩欧美精品一区二区三区| 久久性感美女视频| 久久aⅴ国产欧美74aaa| 精品在线小视频| 久久er这里只有精品| 亚洲国产精品精华液ab| 国产精品午夜一区二区欲梦| 色哟哟免费网站| 在线观看亚洲欧美| www.99色| 嫩草嫩草嫩草| 久久亚洲国产精品| 久久久精品人妻一区二区三区四| 欧美多人猛交狂配| 亚洲av成人精品毛片| 91高清国产| 少妇一级淫免费观看| 欧美在线啊v一区| 久久久久久久片| 视色,视色影院,视色影库,视色网| 欧美激情免费观看| 亚洲日本va午夜在线影院| 性猛交xxxx| 黄色一级在线视频| 日本午夜精品| 日韩福利影院| 欧美精品久久99| 91青草视频久久| 精品国产电影一区| 国产激情91久久精品导航| 久久久久麻豆v国产精华液好用吗| 久久久伊人欧美|