みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PHP+MySQLで簡単な商品の検索サイトを作ってます。

PHP+MySQLで簡単な商品の検索サイトを作ってます。

商品数が5万件程度なら一つのテーブルで問題ないのですが、
30万件とか100万件とかになると、処理に時間がかかってしまいます。

処理を早くするために普通はどのよに対処するのですか?
例えば、10万件毎にテーブルを分けていくのですか?

投稿日時 - 2010-03-10 01:06:04

QNo.5739522

困ってます

質問者が選んだベストアンサー

>30万件とか100万件とかになると、処理に時間がかかってしまいます。

100万件程度ならそれほど負荷にはならないと思います。
まずはテーブル構造をきちんとすること
整合性をとるための正規化は必要ですが、正規化すればはやくなる
というものではありません。高速化のためにはあえて冗長な
構造にする手もあります。

それとインデックスをうまくはること。
そして当然ながらSQLをチューニングすることです。

投稿日時 - 2010-03-10 09:27:42

ANo.2

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(2)

普通は1つのテーブルで処理します。

Cluster化するなど高度な対応策はあるのですが、基本設計レベルで、データベースが正規化できているかどうかが問題です。
たとえば、頻繁に検索・表示し、かつ変化しない項目というのは「商品コード」「商品名」「型式/サイズ・コード」「メーカーコード」でしょうから、これらをまとめて1つのテーブルにします。変化がある「価格」は別テーブルにし、「商品コード」でリンクします。「商品画像」のような情報も別テーブルにします。また、マスターテーブルとして「型式/サイズ・コードマスタ」や「メーカコードマスタ」が必要になってきますね。
次に、検索キーをどの項目にするか検討します。

詳しくは下記サイトを参考にしてください。

参考URL:http://www.atmarkit.co.jp/fdb/rensai/db_enginer03/db_enginer03_1.html

投稿日時 - 2010-03-10 01:26:58

あなたにオススメの質問