不是啊,建太多會影響效能的,維護成本也很大
一般在關鍵字段上建立
例如 where 後面有很多字段,其中有 logtime 字段,你在這個欄位上建立索引,
查詢是根據 logtime 字段指定時間條件就會過濾掉絕大部分記錄,剩下的即使全表掃瞄也不會太多,從而影響查詢速度
我們業務基本都是以 時間型別 建立函式索引的
比如create index emp_ind on emp(to_char(hiredate ,'yyyy-mm-dd'))
查詢時select * from emp
where (to_char(hiredate ,'yyyy-mm-dd')) ='2012-01-25'
這樣就剩下記錄就只是 一天的記錄了,在用其它字段過濾一下,速度很快
給你個時間例子
p_o_w_cellsamplepoints 66.9gb
select * from p_o_w_cellsamplepoints
where to_char("starttime",'yyyy-mm-dd')='2011-06-08'
結果不到 1秒
索引以及聯合索引的使用
一.索引的使用 1.主鍵 預設是自帶索引的 和外來鍵 以及一些可以跟其他表關聯的字段 2.where子句中經常出現的字段 3.索引應該建在小字段上,大的資料字段 bit,image,text 不適用 二.聯合索引 1.查詢條件中出現聯合索引第一列或全部則能利用聯合索引 2.只要聯合條件全部在 3.查...
oracle索引 3 函式索引
3.函式索引 可以在表中建立基於函式的索引。如果沒有基於函式的索引,任何在列上執行了函式的查詢都不能使用這個列的索引。例如,下面的查詢就不能使用dt time列上的索引,除非它是基於函式的索引 where 1 1 and sysdate to date dt time,yyyymmddhh24mis...
oracle函式索引
1 使用函式索引使儲存的資料區分大小寫 建表 create table t user usercode varchar2 10 primary key,username varchar2 60 insert into t user usercode,username values uu 小強 ins...