2012-03-24 20 views
6

私が知りたいのは、帯域幅と全体的な効率の面で最も高額なオプションです。1つの大きなクエリと多くの小さなクエリ

私のアプリケーションにクラスClientがあり、データベースにclientのテーブルがあるとします。

個々のフィールドを取得する多くのクライアントレコード(Client.getNameByIdClient.getMobileNumberByIdなど)を取得する1つの静的関数Client.getByIdを持つ方がよいでしょうか?

のフィールドがの場合、現在のスクリプトで1つまたは2つのデータが使用されてしまいますが、すべてのデータをどのように処理するかはアプリケーション内で決めるのが良いでしょうか?

途中でPHPMySQLを使用しています。

+0

それはあなたがしているすべてによって、必要なものはすべて必要なのですか?あなたの帯域幅は何ですか?何人のユーザーがいますか?これはすべて同じサーバールームにありますか?下の光ファイバー?モバイルインターネット経由ですか?あなたの待ち時間は何ですか?あなたのユーザーはどこですか?あなたのサーバーはどこですか?彼らはどれくらい強力ですか?彼らはどのように組織されていますか"たくさん"何バイトありますか... ... – Ben

+0

@Benあなたは抽象的な思考のための能力を持っていますか?私はどのオプションが一般的な場合に良いか尋ねています。アプリケーションはまだリリースされていないのでわからない – federicot

+0

はい:-)。 @コード化されていれば、データベースへの呼び出しが少なくなるほど、転送されるバイト数は少なくなりますが、すべての質問は有効です。彼らは影響を与えるでしょう... – Ben

答えて

12

個々のフィールドを取得する多くのクライアントレコード(Client.getNameById、Client.getMobileNumberByIdなど)を取得する静的関数Client.getByIdを使用する方がよいでしょうか?

はい、そうです。

ネットワークの待ち時間と遅延、および接続を確立するオーバーヘッドは、データベースを飽和状態に保つ最良の方法です。

データのサイズが実際に非常に大きい場合は、1つのクエリで必要な特定のフィールドの取得(データへのクエリの調整)を検討することができます。

+0

あなたの答えをありがとう! – federicot

+24

「AまたはBを行う方が良いですか?」....「はい」 :-D –

関連する問題