客戶-訂單-訂單項
插入資料的儲存過程如下:
create or replace procedure createusers is
v_sequ_user number(19);
v_sequ_order number(19);
begin
for v_count in 1..1000000 loop
insert into user_ values(seq_all.nextval, 'user_'||v_count, 'user_'||v_count, sysdate, '這是第'||v_count||'使用者');
select seq_all.currval into v_sequ_user from dual;
for v_order_cout in 1..3 loop
insert into order_ values(seq_all.nextval, sysdate,v_sequ_user, '這是第'||v_count||'使用者第'||v_order_cout||'張訂單');
select seq_all.currval into v_sequ_order from dual;
for v_item_count in 1..5 loop
insert into item_ values(seq_all.nextval,'訂單項'||v_item_count,dbms_random.value(100, 100000), dbms_random.value(1, 1000), '這是第'||v_count||'使用者第'||v_order_cout||'張訂單第'||v_item_count||'個訂單項', v_sequ_order);
end loop;
end loop;
if mod(v_count, 100) = 0 then
commit;
end if;
end loop;
end createusers;
總共插入季1900w條記錄,用了4898.188秒。
--查詢訂單總額大於10000的所有使用者的姓名和訂單號
select u.name_, o.id_
from user_ u, order_ o, (select i.fk_order_item, sum(i.price_) from item_ i group by i.fk_order_item) temp
where u.id_ = o.fk_user_order_
and temp.fk_order_item = o.id_;
千萬條記錄分頁查詢優化
分頁查詢是最常用的場景之一,但通常也是最容易出問題的地方。比如對於下面簡單的語句,一般 dba 想到的辦法是在 type,name,create time 欄位上加組合索引。這樣條件排序都能有效的利用到索引,效能迅速提公升。select from tstb logwhere type sqlstat...
MySQL儲存過程(測試插入100萬條記錄)
向資料庫中插入100萬條記錄,不得不提及mysql的儲存過程 mysql的儲存過程從5.0版本開始支援,它是一種在資料庫中儲存複雜程式,以便外部程式呼叫的一種資料庫物件。簡言之就是一組可程式設計函式,為了完成特定功能的sql語句集,經編譯建立並儲存在資料庫中,使用者可通過指定儲存過程的名字並給定引數...
需求千萬條,質量第一條 單元測試的前生今生
和標題是一樣的 需求千萬條,質量第一條,保證 的質量是開發者應該具備的硬性能力。其實很多開發者都明知道單元測試很重要,但是為什麼還那麼反感單元測試呢?原因有三 1.單元測試太浪費時間了,很多需求都做不完,哪有功夫閒心去做單元測試,如果做單元測試,完成不了需求,程式猿是需要背鍋的,所以為了不背鍋只能捨...