建立測試表
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在解析的過程中,會將 依次轉換成所有的列名,這個工作是通過查詢資料字典完成的,這意味著將耗費更多...