Oracle 中索引失效的情況

今天遇到了數(shù)據(jù)庫查詢語句的優(yōu)化,遇到了索引失效的激烈討論放椰。

所以今天總結(jié)一下索引失效的一些情況

1.隱式轉(zhuǎn)換導(dǎo)致索引失效。

????在日常開發(fā)中經(jīng)常發(fā)生,以后要引以為戒

????表的字段tu_mdn定義為varchar2(200),但在查詢時(shí)把該字段作為number類型以where條件傳給Oracle,這樣會(huì)導(dǎo)致索引失效.

?錯(cuò)誤的例子:select * from?stu where sn=13333333333;

因?yàn)榇嬖陔[式的類型轉(zhuǎn)換搂根,所以索引失效

?正確的例子:select * from stu?where sn='13333333333';


2. 對(duì)索引列進(jìn)行運(yùn)算導(dǎo)致索引失效。

? 對(duì)索引列進(jìn)行運(yùn)算包括(+铃辖,-剩愧,*,/娇斩,! 等)

??錯(cuò)誤的例子:select * from?stu where id-1=9;

? 正確的例子:select * from stu where id=10;


3. 使用Oracle內(nèi)部函數(shù)導(dǎo)致索引失效仁卷。


???????錯(cuò)誤的例子:select * from?stu where round(id)=10; 說明,此時(shí)id的索引已經(jīng)不起作用了

? ? ? ?對(duì)于這樣情況應(yīng)當(dāng)創(chuàng)建基于函數(shù)的索引.犬第,create index test_id_fbi_idx on test(round(id));

? ? ? 然后 select * from test where??round(id)=10; 這時(shí)函數(shù)索引起作用了


4. 以下使用會(huì)使索引失效锦积,應(yīng)避免使用;

?a. 使用 <> 歉嗓、not in 丰介、not exist、!=

?b. like "%_" 百分號(hào)在前(可采用在建立索引時(shí)用reverse(columnName)這種方法處理)

?c. 單獨(dú)引用復(fù)合索引里非第一位置的索引列.應(yīng)總是使用索引的第一個(gè)列,如果索引是建立在多個(gè)列上, 只有在它的第一個(gè)?列被where子句引用時(shí)哮幢,優(yōu)化器才會(huì)選擇使用該索引带膀。

?d. 當(dāng)變量采用的是times變量,而表的字段采用的是date變量時(shí).或相反情況橙垢。


5. 不要將空的變量值直接與比較運(yùn)算符(符號(hào))比較垛叨。

???如果變量可能為空,應(yīng)使用 IS NULL 或 IS NOT NULL 進(jìn)行比較钢悲,或者使用 ISNULL 函數(shù)点额。


6. 不要在 SQL 代碼中使用雙引號(hào)。

??因?yàn)樽址A渴褂脝我?hào)莺琳。如果沒有必要限定對(duì)象名稱还棱,可以使用(非 ANSI SQL 標(biāo)準(zhǔn))括號(hào)將名稱括起來。


7. 將索引所在表空間和數(shù)據(jù)所在表空間分別設(shè)于不同的磁盤chunk上惭等,有助于提高索引查詢的效率珍手。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市辞做,隨后出現(xiàn)的幾起案子琳要,更是在濱河造成了極大的恐慌,老刑警劉巖秤茅,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件稚补,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡框喳,警方通過查閱死者的電腦和手機(jī)课幕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來五垮,“玉大人乍惊,你說我怎么就攤上這事》耪蹋” “怎么了润绎?”我有些...
    開封第一講書人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)诞挨。 經(jīng)常有香客問我莉撇,道長(zhǎng),這世上最難降的妖魔是什么亭姥? 我笑而不...
    開封第一講書人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任稼钩,我火速辦了婚禮,結(jié)果婚禮上达罗,老公的妹妹穿的比我還像新娘坝撑。我一直安慰自己静秆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開白布巡李。 她就那樣靜靜地躺著抚笔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪侨拦。 梳的紋絲不亂的頭發(fā)上殊橙,一...
    開封第一講書人閱讀 51,462評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音狱从,去河邊找鬼膨蛮。 笑死,一個(gè)胖子當(dāng)著我的面吹牛季研,可吹牛的內(nèi)容都是我干的敞葛。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼与涡,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼惹谐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起驼卖,我...
    開封第一講書人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤氨肌,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后酌畜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體怎囚,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年桥胞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了桩了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡埠戳,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蕉扮,到底是詐尸還是另有隱情整胃,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布喳钟,位于F島的核電站屁使,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏奔则。R本人自食惡果不足惜蛮寂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望易茬。 院中可真熱鬧酬蹋,春花似錦及老、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至匕垫,卻和暖如春僧鲁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背象泵。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工寞秃, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人偶惠。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓春寿,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親洲鸠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子堂淡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • ORACLE自學(xué)教程 --create tabletestone ( id number, --序號(hào)usernam...
    落葉寂聊閱讀 1,081評(píng)論 0 0
  • 作者 | 末來源 | https: //www.cnblogs.com/areyouready/p/780288...
    Java旅途閱讀 332評(píng)論 0 0
  • SQL 優(yōu)化(載錄于:http://m.jb51.net/article/5051.htm) 作者: (一)深入淺...
    yuantao123434閱讀 734評(píng)論 0 7
  • 本文主要總結(jié)了工作中一些常用的操作及不合理的操作,在對(duì)慢查詢進(jìn)行優(yōu)化時(shí)收集的一些有用的資料和信息扒腕,本文適合有MyS...
    Chting閱讀 602評(píng)論 0 1
  • 50個(gè)常用的sql語句Student(S#,Sname,Sage,Ssex) 學(xué)生表Course(C#,Cname...
    哈哈海閱讀 1,231評(píng)論 0 7