DBチューニング
振られる。Oracleなんて7に触ったのが最後で、今時のチューニングなんてまったく分からないですけど。
とりあえずテーブル設計を見せて貰う。
ちゃんと正規化してあるし論理的に良くできた設計と見たが、SELECTでJOINをしまくっていた。十段程度のJOINをしたVIEWはあたりまえ、そんでそれ同士をさらにJOINして、ついでにも一つJOIN、みたいな問い合わせのオンパレード。そりゃいくらOracleでも泣きが入るだろう・・・つーかこんなもんに「応答性能2秒出せ」とかいってんのは何処の何奴だ。
色々と小細工してみたもののあっさり限界に突き当たる。問い合わせ設計やり直さないとダメっぽいぞー。どうすんだー。
- ほとんど変化しない下層の情報をメモリ上にキャッシュしてJOINを減らすとか。
- いっそのこと条件が変化するたびにVIEWをDROP&CREATEし直すとか。
- あるいはVIEWを使ってるところをコード化して最適なSQLを動的に組み立てるとか。
経験がなく直感も働かないから「こうだ!」って言えないのがつらいよなぁ。InterBaseかFirebirdならなんとか頑張れるのだけれど。
・・・は。いかんいかん。自分の仕事じゃないのに入れ込んではいかん。
とりあえず明日のアドバイスは
- JOINをなんとかして減らしたらどうかしら。
- 非正規化はもう少し待った方がいいような気がする。
程度かな。