[PHP-users 28797] Re: PHPからMySQLを使って3つのテーブルからデータ検索する方法について

神田@kcs2000 info @ kcs2000.jp
2006年 3月 23日 (木) 21:14:33 JST


神田と申します。

すでにPHPの問題ではないと思いますが...

> 件数がどれくらいあるのかわかりませんが、mysqlってindexを適切に設定
> していないと能力でないですよね。少なくとも、件数が増えると一番最初
> の検索項目にはindexを付けないとだめでしょ。

このたびの例では会員番号という列はおそらくはPrimary Keyに設定してある
と思いますので、Indexは作成されているとは思います。ただし、履歴をもつ
テーブル構造であれば、会員番号のほかに連番や作成年月日なども複合キーと
して設定してあるのかもしれません。そういう構造であれば、Indexを使用し
たリンクは出来ませんので、sumiyaさんがご指摘になったようにIndexを使用
できていないために検索に時間が掛かっていることが考えられます。

リレーショナルデータベースでは表のリレーションを貼るため、基本的には
ユニークなひとつの列をPrimary Keyとして設定すべきです。データが履歴を
持つために同一の会員番号が存在するような場合でも、テーブルのPrimary Key
をシーケンスなどを使用してユニークにしておき、表間のリレーションはこの
ユニークなキーで貼るように設計するのが基本的な考え方です。

指摘したような設計であれば、簡単に移行できませんね。いかがでしょうか。




PHP-users メーリングリストの案内