2009年3月30日月曜日

Oracle:エイリアスは積極的に活用する

テーブル名の別名をエイリアスと呼ぶ。
これを付けた方が、列が所属するテーブル名の確認を省くことができうるので、
解析時間の短縮につながる。
select d.no, d.name from dept d;

d:エイリアス

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
等は暗黙のソートが実施される。

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;

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がある場合











条件指定索引の利用
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日火曜日

字をうまく書く3つの方法

1.漢字は大きく、ひらがなは小さく(ひらがな70%、カタカナ80%)
2.等間隔に書く
3.最後の点は遠くに書く

2009年3月2日月曜日

Java:log4j.xml サンプル

その他: "log4j.xml サンプル"

log4j.xmlのサンプルです。