1

一般的な質問です。データベースの値またはNULLを保持する方が良いですか?

毎日計算し、合計金額の値の条件に基づいたコミッションフィールドがあります。次の日付のコミッションは前のコミッションに基づいて計算され、合計値と合計されます。コミッションも0.00にすることができますが、マイナスにすることはできません。ゼロ値を保持するか、それらをNULLとして入力し、クエリで「comm」だけでなく「ISNULL(comm、0)」を使用する方がよいでしょうか。

パフォーマンスとDB容量のどちらが優れていますか?

UPD:パフォーマンスはちょうど良いです。毎日数百人のユーザーレコードがある場合、ストレージ容量に違いはありますか?EMPTYは実際にはそのEMPTYであるため、NULLであるか、ストレージ値0.00がNULL自体よりも小さい場合は数バイトかかります。

4

4 に答える 4

4

コミッション値が0の場合は、NULLではなく0のままにしておく必要があります。関数を呼び出して、ISNULL再び0に変換するのはなぜですか?それは間違っており、それはあなたのコードを処理しようとしている将来のプログラマーに、なぜそれがそのように設計されたのかを2日間考えさせます。

シンプルで清潔に保ちます。0を使用します。

msdnから、

NULLの値は、値が不明であることを示します。NULLの値は、空またはゼロの値とは異なります。

于 2012-07-07T13:56:38.907 に答える
3

null許容列は通常、余分なビットを使用してnullにフラグを立てます。何かが「空」であるという事実を記録することは、それでも何らかの形でエンコードされなければならない情報です。明らかに、これにはストレージと処理の両方が含まれます。行がページに配置される方法のために、ストレージコンポーネントはまだ実際には重要ではないかもしれません。いずれにせよ、それは本当にあなたの最も重要な考慮事項ではありません。

その列を参照するたびに、ISNULLチェックを作成する必要があります。インデックスの使用が複雑になる可能性があります。あなたはそれをタイプするのに飽きるでしょう。

ゼロが意味する場合は、そのように保存します。すべてがはるかに簡単です。DDLで「NULL」および「NOTNULL」列定義を明示的に指定するためのキーストロークを保存します。

于 2012-07-07T22:22:38.090 に答える
2

NULLは実際にはNULLを意味し、0は既知のゼロの値を意味します。パフォーマンスに違いがあるとは思えませんが、適切な場合に適切な変数を使用するための一般的なプログラミングロジックにすぎません。

于 2012-07-07T14:05:16.717 に答える
1

ここでは、sqlserverがNULLを格納する方法を確認できます

http://weblogs.sqlteam.com/mladenp/archive/2007/09/06/How_does_SQL_Server_really_store_NULL-s.aspx

于 2012-07-08T08:29:43.263 に答える