SQL三昧

■新宿
今日は銀行に行くために新宿に行った.そしたら休みだった.仕方がないのでヨドバシで PostgreSQL の本を立ち読みして体系的に理解することにつとめた.ネットだけだとつかみは理解しづらいからね.

PostgreSQL / Perl / DBI
DBI の使い方
http://www.rfs.jp/sb/perl/dbi/02.html
perl/DBI をつかって Postgres に接続しようとしたときにエラーが言われる
http://www.documents.daoffice.com/faq/07083.html

firewall というか iptable のせいで外回りだと接続できない.しょうがないので loopback アドレスを使う.だけど,本質的には何ら解決していない.

とりあえず,perl からは叩けるようになった.高速化のためには SQL 上で天空面上での距離を測る関数を用意しないといけない.そのためには,新しい天空面座標型みたいなのがあった方が良いのだが・・・これって定義できるのかな?

SQL の言語を新しく覚えても将来がなさそうなので Pl/Perl を使うことにする.文字列の扱いが便利なので.本家はクラックされたらしく死んでるので:sra に世話になるとは・・・
http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQL-8.1-ja/plperl.html

特にこの辺が重要
http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQL-8.1-ja/plperl-triggers.html

■変な使い方
select * from sin(2)
select "OBJECT", sin(sum("EXPTIME")) as rank from smoka group by "OBJECT" order by rank
4万レコードある DB でこんなことしても0.2秒くらい.はぇえ

■結局
SQL は3日くらいで使えるようになった。割と簡単だった。というか、環境が組み上がってからが早かった。
select "FILTER", sum("EXPTIME")
from (
select dist("RA2000","DEC2000",'13:11:38.180','-01:23:55.86') as distance, *
from psfcut
) as selected
where distance < 0.1
group by "FILTER"
limit 100