DB設計 - 見栄えを意識しすぎてパフォーマンスが落ちる。

パフォーマンスを重視

見栄えを意識しすぎない

DB設計やプログラミング設計を行うとき、どのようにしたら一番効率がよく綺麗に記述できるかを考えますよね。
これはとても大事なことなのですが、時にそのせいでパフォーマンスが落ちることがあります。

DBの構成やプログラムのソースが綺麗でも、エンドユーザーは分かりません。
これらはこちら側の問題です。

その一方で処理速度などは、エンドユーザーにとっても大事なことです。
そのため、見栄えよりパフォーマンスを意識するのはあきらかですよね。
一見当たり前のことのようですが、実際にできていない人は多いのではないでしょうか。

DB構成の例

例えば会社員の情報を扱うテーブルを作成するとします。
この情報は以下のものとします。

名前、住所、年齢、性別、電話番号、E-Mail、
部署名、科名、上司名(ID)、入社日などなど複数

こういった情報を取り扱う場合、名前や住所などの個人情報と、部署名などの会社での情報は分けてテーブルを作成したくなりますよね。
今回は項目が少ないですが、これが多くなればなるほど分けたくなります。
もちろん分けてよいこともありますが、場合によってはパフォーマンスが低下することがあります。

こういった情報を取得するときにSELECT文を使用しますが、1つのテーブルから取得するのと複数のテーブルをJOINして取得するのでは処理時間に差がでます。
データが何万、何十万件など増えてくると、雲泥の差が開いてしまうのです。
そのため、1対1の関係であれば、極力1つのテーブルで管理した方が良いのです。

プログラミングも同じ

プログラミングでも、ソースを綺麗に意識して、無駄な処理が多くなることがあります。
プログラムを書く身としては、綺麗に書きたい気持ちはとても分かります。
しかしそうすることでパフォーマンスが落ちるのであれば、それは良くありません。

もちろん見栄えをよくして綺麗なコード作りはとても大切ですが、こういったこと考え、何が優先かを意識しましょう。

最後に

開発になれてくると、我々技術者としてのプライドが出てきて、いろんな箇所に妥協できなくなりますよね。
しかし、我々はエンドユーザーのためにシステムを開発していることを忘れてはいけません。

当たり前の内容かもしれませんが、できていない人が多いようですし私もまだまだ学ばなければならないと思い、記事にしました。
皆さんも意識してみてください。

  • このエントリーをはてなブックマークに追加
Related

PHPで動画の撮影日を取得

PHPで動画の撮影日を取得 概要 PHPからffprobeコマンドを実行し、動画の撮影日時を取得します。 コード $posted_at = ...

FullCalendarでGoogleカレンダーのようなUIを実装

jQueryプラグインFullCalendarのサンプル 概要 FullCalendarを使用して、GoogleカレンダーのようなUIを実装する使用例を...

PHP Laravel5.2でmulti-auth(複数テーブルでの認証)を実装

Laravel5.2でマルチ認証 概要 LaravelとはPHPの中で今最も伸びているフレームワークです。 処理速度が遅いなどありますが、かなり使い安く拡...

PHP 正規表現でIPアドレス形式の文字列か判定

正規表現でIPアドレスの入力チェック 概要 フォームで入力されたIPアドレスが正当な文字列か判定するためのバリデーション処理を実装します。 基本的...

rbenv環境でRuby on Railsのアプリケーションを一瞬で自動生成

アプリケーション構築時に最初に行う手順 概要 アプリケーションを作成するまでの手順を記載しています。 rbenvなどの環境が設定済と仮定して話を進めま...

Rails devise・authority・rolifyで権限付きの認証機能

devise・authority・rolify 概要 3つのGemを使用して、権限付き認証機能を実装します。 gem インストール Gemfile ...
トップへ戻る