2012-04-13 1 views
0

私は25-30カテゴリの禅カートを持っています。サイトのフロントページには、それぞれのカテゴリには、そのカテゴリの4つのベストセラー商品が表示される小さなエリアがあります。多くの小さなSQL文は、私のサイトをかなり遅くします

私はこれをやっていると考えることができる最良の方法は、ページが読み込まれるたびにベストセラーを選ぶ各カテゴリの単一のSQL文を持つことです。私は、あなたがサイトの速度に影響しないようにSQLステートメントの量を制限するのが最善であるとどこかで読んだことがあります。

このようにすると非常に遅くなりますか?

これを行うより賢明な方法がありますか?

+0

これはもっと複雑なクエリではできませんか?スキーマはどうですか? –

+1

いつものように、これに対する答えは「それは依存している」。あなたが現場にいる場合、それに答える最善の方法は、いくつかの変更を加えて、それがどのような効果を持っているかを見ることです。まず、いくつかのSQLの変更を試してみてください。一般的に、簡単なクエリの場合は、個々のクエリの数を制限することをお勧めします.4つの行を取得するクエリのほうが、4つの個別のクエリよりも優れていることがよくあります。 – halfer

+1

経験則:複数のクエリで達成される単一のクエリで同じことを達成できる場合は、単一のクエリを使用します。これには例外がありますが、それほど多くはありません。 *本当に複雑なもの、または1つ以上のMySQL UDFを必要とするものがある場合、複数のクエリに分離するケースがあります。一般的には、クエリー/ DBの解析/ DBの結果の検索/ DBの返送/結果セットのPHP解析に伴うオーバーヘッドが増えるため、クエリーが少なくなります。 1つのクエリしか使用しない場合は、すべてこれが1回だけ発生します。 – DaveRandom

答えて

2

これは、ウェブサイトをバックアップするサーバーによって大きく異なります。しかし、25から30のクエリは、ページのパフォーマンスに大きな影響を与えるべきではありません。

より良い方法は、1つのクエリですべてのアイテムをフェッチするデータベースクエリを設計することです。しかし、そうするためには、データベースのスキーマが必要です。

また、多くの同様のクエリを実行する必要がある場合は、通常はパフォーマンスを向上させる「準備済みクエリ」を使用するオプションがあります。

一般的に言えば、データベースの操作に慣れていない場合は、構造が簡単で扱いやすい小さなクエリをいくつか設計し、エラーを含む可能性がある大きなクエリ多分データベースの速度を遅くし、複数の小さなクエリを遅くするかもしれません。

+0

こんにちは、回答ありがとう、DBスキーマはここに見ることができます:http://www.zen- cart.com/wiki/index.php/Developers_-_Database_Schema - それは可能になるように見えますか? –

+0

私はそれが可能であると確信しています。 1つのカテゴリから表示する製品を見つけるために現在使用しているクエリを教えてくれたら、試してみましょう。 – Nitram

+0

もう一度、ありがとう。私はまだ実際にはまだ質問がありません、私はこれがすべて可能であるかどうかを調べようとしていました!私はsqlが行く限り、少し学習者のドライバです。 –

関連する問題