ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

RDBで、処理スピードが遅く/早くなりそうな話(噂話も?)を、まとめてみる。

2005-12-12 12:24:29 | Weblog

 データベースの正規化の話で、以前書きましたけど、正規化する、しない以前に、まずは、どういう場合に処理スピードが早くなったり、遅くなったりするのかの要因について、まとめてみようと思います(ただし、正規化に関係しそうなことのみ)

 そして、そのあと(今日のブログではなく、気が向いたときに)で、それらの要因が、正規化と、どう関係しているのかを考えていきます。




<<DBで処理スピードがかかわってくる要因>>

 いちおう、知っている話、噂話をまとめてみました。
 まちがいもあるかも。。

■■(1)インデックスをつけると、検索は早くなる(更新は遅くなるときもある)
 インデックスをつけると、検索は早くなります。もし、早くならなかったら、インデックスをつける人はいないでしょう。
 問題は、更新のときです。
 インデックスを更新する分、更新スピードは遅くなるはずです(無視できるほどかもしれないけど、理論上)。
 とくに、インデックスの編成法によっては、すなわち、インデックスが、B木系(B木,B+木、B*木など)の場合は、場所によって、いろいろと遅くなるかもしれません。

 それを防ぐには、インデックスをハッシュにするという手は、あることはあります。
 ただし、ハッシュの場合、こんどは、キレイにデータが散ってくれないと、あるキーでは、遅くなるという結果になります(シノニムが多数発生するという状態になると、こうなる)。キレイにデータを散らせるには、インデックスのキーに偏りが無いことが必要となり、キーのある部分が、意味のあるコードを表すのはまずいということになります(キーのうち、サイズを示すところがあると、その部分はS,M,L以外は値がないといったような、偏りが出てしまう)

■■(2)SQL文のWhere句が長いと、処理スピードは遅くなる
 そりゃ、条件ふえるから、条件すくないよりも、理論上長いよね。
 ただ、実際どのくらい長くなるかは、そのDBMSやそのたもろもろ諸条件による。
 これは、検索、更新どちらにもいえます。

■■(3)テーブルJOINが多いと、遅くなる
 最近、そんなに遅くないやつもあるし、おそいやつもあるし。。いろいろ。

■■(4)中間テーブルを使われてしまうと遅くなる
 SQL文によっては、中間的に、テーブルをつくることがある。
 たとえば、having句をつかうようなものは、一回、どこかにためているからこそ、
 そのhaving句の検索条件で検索できる。
  で、この中間テーブルは(having句と書いたことからもわかるように)GROUP BY
 とかすると、作るらしい(これ以外のときでも、そのDBMSが、中間テーブルを作った
 ほうがいいと判断したときにつくるらしい)
 これを作られると、そりゃー、メモリ領域を確保するわけですから、おそくなりますわな。

 で、インデックスを作って、インデックスだけで操作できれば、このテーブルを
 作らないらしい。

 佐藤氏の流派で、GROUP BY禁止なのは、このためと言われている(と確か思った)。

■■(5)VIEWとスピード
 検索のときは、単純に、selectでJoinしてから検索するよりか、はやくなることがおおい(作り方にも、もちろんよるけどね)
 更新のときは。。。どーなんでしょう。

 佐藤氏の流派では、VIEWを使うより、正規化して、インデックスを使うことによって、処理スピードは上がるとして、VIEWを禁止していると、確か思った。


■■(6)行連鎖・行移行など
 これは、日経ビジネス構築2005年12月号157ページに説明が載っています。1行がながーい可変長レコードなんかを更新するとき、前の行に収まらないので、分割して格納したり(行連鎖)、別の、あいているところに、1行分格納してしまう(行移行)こと。こうすると、1行を取得するためのアクセス数が増えるので、遅くなる。




 これ以外にも、SQLとトリガーの話など、いろいろあるんでしょうけど、正規化と関係しなさそうな話なので省略します。

 というか、一般的に、処理スピードのサイトというと、「懸賞生活」じゃないよ、
おら!オラ!Oracle-どっぷり検証生活とか、その会社のサイトにある、Oracle SQL文テクニック集などが、中心となるのでしょうから、話は、そっちにゆずることにして、とりあえず、ここで、終わりにしておきます。


この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« ジェイコムショック、東証に... | トップ | 東証が出している、ジェイコ... »
最新の画像もっと見る

Weblog」カテゴリの最新記事