oracle的序列化和索引查詢
阿新 • • 發佈:2019-01-27
-- oracle的序列化 一組有序有規則的數字,常常用來做為表的id(oracle中主鍵沒有自增長)
--sequence語法 create sequence 序列名稱
start with n 從n開始
increment by i 每次增長i,相當於步長
minvalue 最小值
maxvalue 最大值
cycle/ nocycle 迴圈/不迴圈
cache 10,意思是遊標跳到當前步時候,往後快取10步.
currval 當前的值 (遊標最開始預設的位置是-1,所以在使用前呼叫一次nextval)
nextval 下一個值.
create sequence mysequence
start with 1 increment by 2 minvalue 1 maxvalue 9 cache 5 cycle;
select mysequence.nextval from dual;
select mysequence.currval from dual; -- 1,3,5,7,9
--實際開發中我們都是寫下面的,給的是預設值,
create sequence se2;
create table tb (
se2NUM varchar2(20),
NUM varchar2(20)
);
-- 我們先利用這個序列來往一個表中插入大量資料,為後面的索引查詢做準備
declare
begin
for i in 0..5000000 loop
insert into tb values('tb'||se2.nextval,'tb'||i);
end loop;
commit;
end;
-- 索引
--查詢這500萬條資料中的某一條,我們就要用索引 --- create index on 表名 (列名)
1,--單列索引的使用
select * from tb where tb.num = 'tb'||250000;--這是不用索引(我的電腦用了,26,458毫秒)
create index index1 on tb (num);
select * from tb where tb.num ='tb'||250000;--(0.089毫秒,這查詢效率)
-----------------------------------------------------------------------------------
2,多列索引的使用,效率更高
select * from tb where tb.se2num='tb'||400000 and tb.num='tb'||400000;--未使用多列索引(5,872)
create index index2 on tb(se2num,num);
select * from tb where tb.se2num='tb||400000' and tb.num='tb||400000';--建立了雙列索引後查詢的()
--sequence語法 create sequence 序列名稱
start with n 從n開始
increment by i 每次增長i,相當於步長
minvalue 最小值
maxvalue 最大值
cycle/ nocycle 迴圈/不迴圈
cache 10,意思是遊標跳到當前步時候,往後快取10步.
currval 當前的值 (遊標最開始預設的位置是-1,所以在使用前呼叫一次nextval)
nextval 下一個值.
create sequence mysequence
start with 1 increment by 2 minvalue 1 maxvalue 9 cache 5 cycle;
select mysequence.nextval from dual;
select mysequence.currval from dual; -- 1,3,5,7,9
--實際開發中我們都是寫下面的,給的是預設值,
create sequence se2;
create table tb (
se2NUM varchar2(20),
NUM varchar2(20)
);
-- 我們先利用這個序列來往一個表中插入大量資料,為後面的索引查詢做準備
declare
begin
for i in 0..5000000 loop
insert into tb values('tb'||se2.nextval,'tb'||i);
end loop;
commit;
end;
-- 索引
--查詢這500萬條資料中的某一條,我們就要用索引 --- create index on 表名 (列名)
1,--單列索引的使用
select * from tb where tb.num = 'tb'||250000;--這是不用索引(我的電腦用了,26,458毫秒)
create index index1 on tb (num);
select * from tb where tb.num ='tb'||250000;--(0.089毫秒,這查詢效率)
-----------------------------------------------------------------------------------
2,多列索引的使用,效率更高
select * from tb where tb.se2num='tb'||400000 and tb.num='tb'||400000;--未使用多列索引(5,872)
create index index2 on tb(se2num,num);
select * from tb where tb.se2num='tb||400000' and tb.num='tb||400000';--建立了雙列索引後查詢的()