-1

これはかなり単純明快なものかもしれません。作成しようとしている小さなアプリで遊んでいます。ユーザーが「buy_price」と「sell_price」を送信するフォームがあります。次に、彼らが損失を出したか利益を上げたかを調べようとしています。「マージン」、つまり「マージンcoulmn = Sell_price-buy_price」を計算する列をデータベース内に持つ方がよいでしょうか(そして、どうすればこれを行うことができますか)。それとも、php内でこれを行う方が良いでしょうか。

前もって感謝します。

ダン

編集:データを保存してから購入履歴を表示できるため、データベースを使用しています。次に、マージンが最も高いものなどの「ベストトレード」などのセクションを作成したいと思います。

4

3 に答える 3

3

このような単純な計算値をデータベースに保存することは絶対にありません。メンテナンスは、効率のわずかな向上よりも優先される可能性があります。

値を保存しなくても、取得時に値を計算する ( を使用MySQL) か、レンダリング時に PHP を使用するかを選択できます。

SELECT buy_price, sell_price, (buy_price - sell_price) AS margin FROM x

SQLさておき、私はまだレンダリング時にそれを計算しますPHP.

于 2013-07-31T12:54:17.750 に答える
1

データベースでこの計算を行い、値をビューに埋め込む方が良いです:

create view vw_table as
    select t.*, (buy_price - sell_price) AS margin
    from table t;

ビュー (または他のデータベースでは計算列) を使用する方が優れているのはなぜですか?

まず、「マージン」が必要な場所で同じ定義と名前が使用されるようにします。次に、ビューを使用すると、アプリケーション層をデータベース層から分離するのに役立ちます。したがって、アプリケーションを書き直さなくても、表または列の名前を変更できます。ビューを変更するだけです。第 3 に、多くの環境では、大量のデータに対してマージンを並列に計算できます。アプリケーションで順次計算する必要はありません。(一方、クライアントに返されるデータの量はわずかに多くなっています。)

于 2013-07-31T13:01:47.347 に答える
0

「より良い」の定義は、アプリケーションによって大きく異なります。多くの場合、ベンチマークを実行する必要がある操作がより高速であることを示します (ただし、それは PHP だと思います)。ただし、速度はおそらくあなたにとって問題ではないので、「より良い」は単にあなたがやりやすい方になります。これはほぼ間違いなく PHP です。

于 2013-07-31T12:54:08.550 に答える