ORACLE复合索引使用 注意事项
?http://blog.sina.com.cn/s/blog_456c25570100i3za.html
復(fù)合索引的第一列一定要出現(xiàn)在WHERE子句中。
一.like "%_" 百分號(hào)在前.
??? 二.WHERE中單獨(dú)引用復(fù)合索引里第一位置的索引列,并且SELECT、GROUP BY等子句中包含非復(fù)合索引列
例句:
用不到索引
SELECT
???????? CORP.BATCHCODE, CORP.CLITNO,? CORP.LOANBLAN
????FROM VI_CORPCLIT_INFO CORP
????WHERE CORP.BATCHCODE = '200910'
用到索引
SELECT
???????? CORP.BATCHCODE, CORP.CLITNO
????FROM VI_CORPCLIT_INFO CORP
????WHERE CORP.BATCHCODE = '200910'
??? 三.字符型字段為數(shù)字時(shí)在where條件里不添加引號(hào).
四.字符型字段||'',并且SELECT、GROUP BY等子句中包含非復(fù)合索引列。
用不到索引
SELECT
???????? CORP.BATCHCODE, CORP.CLITNO,? CORP.LOANBLAN
????FROM VI_CORPCLIT_INFO CORP
????WHERE CORP.CLITNO||'' = '200910'
用到索引
SELECT
???????? CORP.BATCHCODE, CORP.CLITNO
????FROM VI_CORPCLIT_INFO CORP
????WHERE CORP.CLITNO||'' = '200910'
??? 五.對(duì)索引列進(jìn)行運(yùn)算.需要建立函數(shù)索引。
用不到索引
SELECT
???????? CORP.BATCHCODE, CORP.CLITNO,? CORP.LOANBLAN
????FROM VI_CORPCLIT_INFO CORP
????WHERE substr(CORP.CLITNO,1) = '200910'
用到索引
SELECT
???????? CORP.BATCHCODE, CORP.CLITNO
????FROM VI_CORPCLIT_INFO CORP
????WHERE substr(CORP.CLITNO,1) = '200910'
????六。not in, not exist, <>
??? 七。當(dāng)變量采用的是times變量,而表的字段采用的是date變量時(shí).或相反情況。
??? 八?;赾ost成本分析(oracle因?yàn)樽呷沓杀緯?huì)更小):查詢小表,或者返回值大概在10%以上
??? 九。有時(shí)都考慮到了但就是不走索引,drop了從建試試在
??? 十。B-tree索引 is null不會(huì)走,is not null會(huì)走,位圖索引 is null,is not null? 都會(huì)走
?
總結(jié)
以上是生活随笔為你收集整理的ORACLE复合索引使用 注意事项的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 数据库索引类型 .
- 下一篇: 复合索引和一般索引的问题