2017-10-24 10 views
-3

私の質問は単純で、より速く、高速で、コードで計算を行います(javaと言う)か、複雑なデータベースクエリを実行しています(両方の方法で同じアクションを実行できると仮定した場合)。どちらのアプローチが一般的に優れているのですか?その理由は何ですか?クエリの複雑さとコードの複雑さ

+0

は、再利用可能で、ビジネスロジック(データベースまたはJavaコード、またはその両方)を所有しているユーザーに尋ねます。 –

+0

開発スピードが速く、実行も高速ですか? – reaanb

答えて

0

私はコード内で行います。

DBのクエリでビジネス計算を行うと、アプリのロジックがわかりやすくわかりにくくなります。また、ストレージをチャージする可能性のある特定のストレージ(SQL Server/Oracle/MySqlなど)にバインドされることがよくあります。 paradigma(つまり、NoSQL DBへ)。 コードでは、コードの動作をeaslyに変更するために注入を適用して、より管理しやすくすることができます。

+1

まったく同じ理由で、私はSQLでそれを行うことをお勧めします。 –

+0

あなたは動機づけることができますか? –

+0

すべてのユーザーが同じロジックを参照できるように、データのビジネスロジックを*データで保存する必要があります。同様に、データの完全性チェックはデータベース内になければなりません。これはデータベースが行うことの1つです。私は時間の経過とともに変化するアプリケーションでビジネスロジックを扱う人生を過ごすほどです。 –

0

私は一般的に、(開発時には)私が必要とすることをするためのクエリを書くのが早いことがわかります。最初のラウンドは論理的な正しさに焦点を当て、残りの機能はそのクエリを使用して完成します。この段階ではループ内でクエリを実行しないようにしていますが、それ以外の場合はパフォーマンスについてあまり心配しません。

次に、全体の機能のパフォーマンスを見ていきます。クエリが遅すぎる場合、私はそれを説明し、サーバーの統計を見ます。私の最初の焦点はインデックスにありますが、それがうまくいかない場合は、私はクエリを再構築しようとします。場合によっては、相関サブクエリがジョインよりも速い場合があります。時には、WHERE句の論理和よりも結合の方が速いこともありますが、逆もあります。

1つのクエリで十分なパフォーマンスを得ることができない場合は、複数のクエリに分解したり、コード内でいくつかの作業を行うことがあります。このようなコードは、同等のクエリよりも複雑で長くなる傾向がありますので、必要がない限り避けるようにしています。