2

Oracle 10g DBMS では 1 秒以内に出力が得られる複雑なビューを作成しましたが、MYSQL DBMS では同じビューに 2.3 分かかります。ビュー定義に含まれるすべてのフィールドにインデックスを作成し、さらにを増やしましたquery_cache_sizeが、それでも短い時間で回答を得ることができませんでした。私のクエリは以下のとおりです

select * from results where beltno<1000; 

そして私の見解は次のとおりです。

create view results as select person_biodata.*,current_rank.*,current_posting.* from person_biodata,current_rank,current_posting where person_biodata.belt_no=current_rank.belt_no and person_biodata.belt_no=current_posting.belt_no ;

ビューは次のcurrent_postingように定義されます。

select p.belt_no belt_no,ps.ps_name police_station,pl.pl_name posting_as,p.st_date   from p_posting p,post_list pl,police_station ps   where  p.ps_id=ps.ps_id and   p.pl_id=pl.pl_id  and  (p.belt_no,p.st_date) IN(select belt_no,max(st_date) from p_posting group by belt_no); 

ビューは次のcurrent_rankように定義されます。

select p.belt_no belt_no,r.r_name from p_rank p,rank r       where      p.r_id=r.r_id      and      (p.belt_no,p.st_date) IN (select belt_no,max(st_date) from p_rank group by belt_no)
4

2 に答える 2