2016-11-08 9 views
0

私の質問は、SQLデータベースから与えられたタスクをどのくらいの量のデータを要求するのかということです。データベースクエリの最適化

私はPostgreSQLデータベースを持っていると言います。私は製品テーブルを持っており、製品は20のフィールドを持っています。

システムでは、実際には製品ID、名前、価格だけが必要です。一部の人々は、データベースの3つのフィールドにのみ効率的であると頼むべきだと主張する人もいます。しかし、私は感じています。開発者は常にproductService.getProduct(id)を実行してから、必要なフィールドを選択するほうが簡単です。これらのフィールドに対して別のクラスやクエリを作成するよりも簡単です。

私は3つまたは20のフィールドを尋ねる場合 - クエリの速度のために本当に重要ですか?どのくらいの負荷を増加させることができますか?

(私は「早期の最適化は諸悪の根源である」の考え方とJavaの開発者です。)

+1

3フィールドのみを要求すると、Nの場合は3フィールドしか得られないため、データベースサーバーから接続されたアプリケーションにデータを転送する必要がありません。その単純な – RiggsFolly

+0

主な違いはあなたのクライアントとあなたのdb +シリアル化/逆シリアル化の間の移送にあります –

+0

私はそれが広すぎる/主にオピニオンベースであると思います –

答えて

1

それが重要すべての最適化と同様に、。プロファイラやその他のツール(例えば、ポストグル 'EXPLAIN ANALYZE)があなたに知らせるでしょう。

実際のメカニズムは多くのものに依存します。使用されているデータベース、テーブル/スキーマ、テーブルスペースの設定などがありますので、明確な回答はできませんが、移動するデータの量が異なるため、10行100,000行列または100,000行の3列。

同じ量のページをディスクから読み取っても、実際のクエリでは大きな違いは見られないかもしれませんが、メモリとネットワークの使用は当然異なります。

ありがたいことに、オリジナルのクエリがボトルネックになった場合、コードとクエリをリファクタリングして少ないデータを選択することができます。