oracle索引对模糊查询,Oracle索引
一、Oracle索引原理
通俗易懂得講,索引就是給每條記錄建立了一個目錄(索引),
每個建立的索引都是按照這個索引的字段去排序(實際未必是排序)存放,
然后按照索引字段去查詢的時候,就先去查詢索引,此時找到該條記錄的頁碼rowid,然后再去主表中根據rowid查詢到具體的數據。
組合索引是以多個列作為排序查詢,組合索引中字段的先后有差別,單獨查詢第一個字段時,組合索引也能生效,但是單獨查詢后面的字段時,組合索引不生效。
位圖索引是以二進制為存放,節省存放空間,查詢更快,適合于性別、狀態這類離散度比較低的字段
二、索引優缺點
優點:
當數據量大時,適當地建立索引能夠大大地提高查詢效率
缺點:
建立索引需要占用硬盤空間
索引會影響更新操作的效率,所以一個表的索引不是建越多越好
三、索引創建查看
創建索引
create index 索引名 on 表名(, , …) online
tablespace 表空間 ;
創建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'
查看執行計劃結果
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子句中使用函數
3.使用like?‘%T’ 進行模糊查詢
4.where子句中使用不等于操作(包括:<>, !=, not?colum >= ?, not?colum <= ? ,可以使用or代替)
5.比較不匹配數據類型,例如:select * from tablewhere jlbh?= 1;jlbh為varchar2類型字段
6.索引列上不要使用函數,如to_char、to_date等,如需頻繁使用可以建立函數索引
7.用UNION替換OR(適用于索引列),對索引列使用OR將造成全表掃描
8.SELECT子句中避免使用()ORACLE在解析的過程中, 會將’’ 依次轉換成所有的列名, 這個工作是通過查詢數據字典完成的, 這意味著將耗費更多的時間
總結
以上是生活随笔為你收集整理的oracle索引对模糊查询,Oracle索引的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab如何输出D-H表,MATLA
- 下一篇: oracle 授权 传递,Oracle基