インデックス

郵便番号データを取り込んだデータベースを使用したプログラムの動作が、廃品利用のlinux実験機ではやたらと遅かったという問題がまえにあった。だが、本番環境では普通の速さで動くので特になにも気にしていなかった。


が…、SQLサーバーのクエリー・プラン自動作成機能について読んでいる最中に、「そういえばインデックスを作成していなかった*1」ことに気がついた(笑)。SQLデータベースの基本なのに。

普段扱うようなデータ量ではインデックスが無くても普通に動作するのだが、郵便番号データのような想像を絶するレコード数ではインデックスの有無によるスピードの差は絶大だった…。そういえば、計算量の差は指数関数レベルだったろうか?

*1:郵便番号は重複があるため、主キーに出来なかった。したがってインデックスを改めてつくらなければいけない。