神託

例えば次のような例
tab_name_from_id


名前 出身 新聞ID
佐藤東京2
山田神奈川2
田中東京1
佐伯千葉1
宮元東京3

tab_paper_id
新聞新聞ID
朝日1
日経2
読売3
とか、言うテーブルがあったとして、ここから
name_from_paper
名前 出身 新聞
佐藤東京日経
山田神奈川日経
田中東京朝日
佐伯千葉朝日
宮元東京読売
というのを取り出そうとしたときOracle様だと、
select
  a.名前, a.出身, b.新聞
from
  tab_name_from_id a,
  tab_paper_id b
where
  a.新聞ID = b.新聞ID(+)
と、やるよりも、
select
  名前, 出身,
  decode(新聞ID,
         '1','朝日',
         '2','日経',
         '3','読売',新聞ID)
from
  tab_name_from_id
と、したほうが、select * from name_from_paperは、早い。 つまり、viewを作りたいとき、たいして変化がなければ、子マスタを作るより decode文で、対応をつけることを検討してみる価値はある。 で、なんとなく、顧客管理システム開発失敗、東京ガスが損失50億円という記事を見て、ふと思った。 件の会社がOracleを使ってるかどうかはわからない、が、 この手のシステムはつまるところDBをどうやって巧く使うか、という気がするので、 こういうちょっとした小技の積み重ねがあるかないか、の差のような気がする。
追記: どうやら、この東京ガスの顧客管理システムというのはCRMな世界の話らしい。 他社に先駆けてIPセントレックスを運用している会社なのでIP電話で何か凝ったことをやっていたのだろうか?