oracle之date 查詢效能優化

2021-06-13 07:38:38 字數 879 閱讀 9899

建立測試表

created table test(

id varchar2(20) not null,

dtime date

插入6000000資料

declare

i number;

k number;

begin

k:=0;

for i in 1 .. 6000000 loop

insert into test(id,dtime) values('1',sysdate-k);

if i/10000 =0 then

k:=k+1;

commit;

end if;

end loop;

commit;

end;

第一種查詢語句

select * from test where to_char(dtime,'yyyy-mm-dd')='2013-02-12';

用時:1654ms

第二種查詢語句

select * from test t where dtime between to_date('2012-02-12 00:00:00','yyyy-mm-dd hh24:mi:ss')

and to_date('2012-02-12 23:59:59','yyyy-mm-dd hh24:mi:ss');

用時:203ms

第三種查詢語句

select * from test where dtime = to_date('2012-02-12 00:00:00','yyyy-mm-dd hh24:mi:ss');

用時:188ms

說明:字元進行比較是位元組碼的比較

date是整數比較

請糾錯!謝謝

Oracle判斷查詢 date欄位查詢

select from 表 where to char 字段,yyyymmdd 20180426 這乙個例子就可以詮釋全部的date型別查詢,核心思想就是to char 字段,yyyymmdd 把date欄位日期轉換成字串作比較,20180426 字串的含義2018年04月26日,你也可以精確到毫秒...

Oracle 查詢之date型別資料格式化

今天在做乙個資料查詢的時候接觸到了物化檢視,第一次使用,進行了一番研究,這裡不做描述,物化檢視中同事寫了這樣一行 to date concat to char sysdate 1,dd mm yyyy 00 30 00 dd mm yyyy hh24 mi ss 目標 取當前日期的00 30分。1 ...

oracle查詢效能優化

1.where子句中的連線順序 oracle採用自下而上的順序解析,那些可以過濾掉最大數量記錄的條件必須寫在where子句的末尾,尤其是 主鍵id 這樣的條件 2.select子句中避免使用 oracle在解析的過程中,會將 依次轉換成所有的列名,這個工作是通過查詢資料字典完成的,這意味著將耗費更多...