テーブル名の別名をエイリアスと呼ぶ。
これを付けた方が、列が所属するテーブル名の確認を省くことができうるので、
解析時間の短縮につながる。
select d.no, d.name from dept d;
d:エイリアス
2009年3月30日月曜日
Oracle:DISTINCTをEXISTSで代替する
1対多の結合処理で有効
select distinct d.no d.name from dept d, emp e where d.no = e.no
これは若干遅い。
理由は、distinct句をつけると暗黙のソート処理(※)が行われるため。
select d.no,d.name from dept d, emp e where
exists (select 'X' from emp e where d.no = e.no)
※order by以外でも、
distinct
group by
union
intersect
minus
等は暗黙のソートが実施される。
select distinct d.no d.name from dept d, emp e where d.no = e.no
これは若干遅い。
理由は、distinct句をつけると暗黙のソート処理(※)が行われるため。
select d.no,d.name from dept d, emp e where
exists (select 'X' from emp e where d.no = e.no)
※order by以外でも、
distinct
group by
union
intersect
minus
等は暗黙のソートが実施される。
Oracle:WHERE句の指定順序とパフォーマンス
ANDは後ろから、ORは最初から
SQLのWHERE国複数の索引のない列が指定されていた時の絞り込み順番はANDとORで
異なる
例えば、
select * from testtbl where a1=1 and a2=1 and a3=1;
とandでつながれたSQLは
a3=1
a2=1
a1=1
と後ろから順に絞り込みが実行される
このため、後ろに絞り込みが可能な条件を記述すると検索が早くなる。
また、
ORでつながれたSQLはANDとは逆で前から順に絞り込まれる
select * from testtbl where a1=1 or a2=1 or a3=1;
SQLのWHERE国複数の索引のない列が指定されていた時の絞り込み順番はANDとORで
異なる
例えば、
select * from testtbl where a1=1 and a2=1 and a3=1;
とandでつながれたSQLは
a3=1
a2=1
a1=1
と後ろから順に絞り込みが実行される
このため、後ろに絞り込みが可能な条件を記述すると検索が早くなる。
また、
ORでつながれたSQLはANDとは逆で前から順に絞り込まれる
select * from testtbl where a1=1 or a2=1 or a3=1;
Oracle:Oracle複合索引
http://books.google.co.jp/books?id=o30Cs-eabZwC&pg=PA136&lpg=PA136&dq=%E5%AE%9F%E8%A1%8C%E8%A8%88%E7%94%BB%E3%80%80%E8%A6%8B%E6%96%B9%E3%80%80+Cost+(%25CPU)&source=bl&ots=5bxUscDLDn&sig=xsaDXeK8CEnxqoH-GZ5zIr-wRvo&hl=ja&ei=UyTMSe-zIoSq6gPEicWdBw&sa=X&oi=book_result&resnum=7&ct=result#PPA149,M1
■複合索引 i1,i2,i3がある場合
複合索引の先頭列が検索条件に含まれている必要がある。
もし、i2,i3のみが検索条件の場合でも、i1を無理に指定する
ことで索引が利用される。
■複合索引 i1,i2,i3がある場合
条件指定 | 索引の利用 |
where i1=1 and i2=1 and i3=1 | 利用される |
where i1=1 and i2=1 | 利用される |
where i1=1 and i3=1 | 利用される |
where i1=1 | 利用される |
where i2=1 | 利用されない |
where i3=1 | 利用されない |
where i2=1 and i3=1 | 利用されない |
複合索引の先頭列が検索条件に含まれている必要がある。
もし、i2,i3のみが検索条件の場合でも、i1を無理に指定する
ことで索引が利用される。
2009年3月22日日曜日
2009年3月17日火曜日
2009年3月8日日曜日
2009年3月2日月曜日
登録:
投稿 (Atom)