oracle索引对模糊查询,Oracle索引
一、Oracle索引原理
通俗易懂得講,索引就是給每條記錄建立了一個目錄(索引),
每個建立的索引都是按照這個索引的字段去排序(實際未必是排序)存放,
然后按照索引字段去查詢的時候,就先去查詢索引,此時找到該條記錄的頁碼rowid,然后再去主表中根據(jù)rowid查詢到具體的數(shù)據(jù)。
組合索引是以多個列作為排序查詢,組合索引中字段的先后有差別,單獨查詢第一個字段時,組合索引也能生效,但是單獨查詢后面的字段時,組合索引不生效。
位圖索引是以二進制為存放,節(jié)省存放空間,查詢更快,適合于性別、狀態(tài)這類離散度比較低的字段
二、索引優(yōu)缺點
優(yōu)點:
當(dāng)數(shù)據(jù)量大時,適當(dāng)?shù)亟⑺饕軌虼蟠蟮靥岣卟樵冃?/p>
缺點:
建立索引需要占用硬盤空間
索引會影響更新操作的效率,所以一個表的索引不是建越多越好
三、索引創(chuàng)建查看
創(chuàng)建索引
create index 索引名 on 表名(, , …) online
tablespace 表空間 ;
創(chuàng)建Bitmap索引
create bitmap index 索引名 on 表名(字段) online
tablespace 表空間 ;
刪除索引
drop index 索引名;
查看該表的所有索引
select * from all_indexes where table_name = '表名';
查看該表的所有索引列
select* from all_ind_columns where table_name = '表名';
四、查看索引是否生效
生成查詢計劃
explain plan for
select * from t_call_records where t_bjhm='123456'
查看執(zhí)行計劃結(jié)果
select * from table(dbms_xplan.display)
五、索引使用時的注意點
order by、group by使用索引的前提條件:
1.order by、group by中所有的列必須包含在相同的索引中并保持在索引中的排列順序;
2.order by、group by中所有的列必須定義為非空
不走索引的幾種情況:
1.where子句中使用 is?null?和 is?not?null
2.where子句中使用函數(shù)
3.使用like?‘%T’ 進行模糊查詢
4.where子句中使用不等于操作(包括:<>, !=, not?colum >= ?, not?colum <= ? ,可以使用or代替)
5.比較不匹配數(shù)據(jù)類型,例如:select * from tablewhere jlbh?= 1;jlbh為varchar2類型字段
6.索引列上不要使用函數(shù),如to_char、to_date等,如需頻繁使用可以建立函數(shù)索引
7.用UNION替換OR(適用于索引列),對索引列使用OR將造成全表掃描
8.SELECT子句中避免使用()ORACLE在解析的過程中, 會將’’ 依次轉(zhuǎn)換成所有的列名, 這個工作是通過查詢數(shù)據(jù)字典完成的, 這意味著將耗費更多的時間
總結(jié)
以上是生活随笔為你收集整理的oracle索引对模糊查询,Oracle索引的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab如何输出D-H表,MATLA
- 下一篇: 修改oracle数据连接数据库,修改Or