カテゴリー
システム開発

データベースからの検索速度が低下する場合

データベースを使った検索システムの不具合に、検索速度が著しく低下することがあります。開発段階では問題なかったが運用を始めてから気づくことがほとんどではないでしょうか。扱うレコード数が増えてくるにつれて検索速度が低下します。さらに検索のためのクエリが適切でないと、レコード数が増えるにつれてパフォーマンスは著しく低下することがあります。

先日も上記のような不具合についての相談を受けました。コードを確認したところ、いくつかのアンチパターンに相当するロジックを見つけました。詳細の説明はしませんが、検索キーに対して適切なインデックスが設定されていないこと、複数段階の絞り込み条件において抽出結果が小さくなるものが後回しにされていたこと、マッチングに置いてその都度演算が行われていたことがパフォーマンスの低下の原因になっていました。抽出条件のロジックとしては正しくはありましたが、データベースシステムに対して、その動作にまで考慮した最適化が行われていなかったのです。SQLについてはパフォーマンスの低下を招く書き方は、アンチパターンとして広まっています。これを勉強するとパフォーマンスの低下は防げることが多いでしょう。

ここに紹介する書籍が良くまとまっており、お勧めします。