DBチューニング

振られる。Oracleなんて7に触ったのが最後で、今時のチューニングなんてまったく分からないですけど。
とりあえずテーブル設計を見せて貰う。


ちゃんと正規化してあるし論理的に良くできた設計と見たが、SELECTでJOINをしまくっていた。十段程度のJOINをしたVIEWはあたりまえ、そんでそれ同士をさらにJOINして、ついでにも一つJOIN、みたいな問い合わせのオンパレード。そりゃいくらOracleでも泣きが入るだろう・・・つーかこんなもんに「応答性能2秒出せ」とかいってんのは何処の何奴だ。


色々と小細工してみたもののあっさり限界に突き当たる。問い合わせ設計やり直さないとダメっぽいぞー。どうすんだー。

  • ほとんど変化しない下層の情報をメモリ上にキャッシュしてJOINを減らすとか。
  • いっそのこと条件が変化するたびにVIEWをDROP&CREATEし直すとか。
  • あるいはVIEWを使ってるところをコード化して最適なSQLを動的に組み立てるとか。

経験がなく直感も働かないから「こうだ!」って言えないのがつらいよなぁ。InterBaseかFirebirdならなんとか頑張れるのだけれど。
・・・は。いかんいかん。自分の仕事じゃないのに入れ込んではいかん。


とりあえず明日のアドバイス

  • JOINをなんとかして減らしたらどうかしら。
  • 非正規化はもう少し待った方がいいような気がする。

程度かな。