oracle索引(函式索引,以時間區分每天)

2021-06-03 12:56:01 字數 568 閱讀 8347

不是啊,建太多會影響效能的,維護成本也很大

一般在關鍵字段上建立

例如 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...