標籤:
查詢語句pl/sql中用F5最佳化語句
ORACLE的explain plan工具的作用只有一個,擷取語句的執行計畫
1.語句本身並不執行,ORACLE根據最佳化器產生理論上的執行計畫
2.語句的分析結果存放在表PLAN TABLE中
select * from TABLE
where NOWTIME >=to_date(‘20160101‘,‘yyyy-mm-dd‘) and NOWTIME < to_date(‘20160102‘,‘yyyy-mm-dd‘)
通過顯示select語句是走索引的“INDEXRANGE SCAN”後邊是索引名稱,cost顯示成本,走索引成本是很低的。
如果沒有“INDEXRANGE SCAN”,表之前是建有索引,說明索引失效,我們無需刪掉再建立索引,只需要用以下語句重建索引,速度很快,即使表裡有上千萬資料。
alter index index_name rebuild tablespace tablespace_name 加入資料表空間名,會將指定的索引移動到指定的資料表空間當中。
索引在重建時,查詢仍然可以使用舊索引。實際上,oracle在rebuild時,在建立新索引過程中,並不會刪除舊索引,直到新索引rebuild成功。 從這點可以知道rebuild比刪除重建的一個好處是不會影響原有的SQL查詢,但也正由於此,用rebuild方式建立索引需要相應資料表空間的空閑空間是刪除重建方式的2倍。重建索引有多種方式
預存程序:
//////////////////////////////////////////
create or replace procedure loop_while
(
start_date in date,
end_date in date
)
is
current_date date := start_date;
current_date_end date;
begin
while current_date <=end_date
loop
current_date_end:=current_date+1;
insert into TABLE1
select * from TABLE
where NOWTIME >=current_date and NOWTIME < current_date+1 ;
commit;
current_date:=current_date+1;
end loop;
end loop_while;
/////////////////////////////////////////////////////////////////
按天迴圈插入表中。
oracle查詢最佳化,預存程序select表迴圈插入另一個表,以及索引重建