0

これは簡単な質問ですが、テーブルの更新手順を作成する場合、たとえば Personinfo はこれで問題ありません

Update Person
 Set 
   FirstName = IFNULL(_FirstName, FirstName),
   LastName = IFNULL(_LastName, LastName)
  Where PID = _PID

これは、レコードの部分的な更新を行うのにまったくお勧めですか、それとも関係なくすべての情報を送り返す必要がありますか?

4

1 に答える 1

0

exp1がnullでない場合、IFNULLはexp2を返します。

ストアドプロシージャに渡したパラメータが設定されていない場合は、「名」と「名」の固定文字列を返したいと思います。パフォーマンスから、更新/選択の速度とデータの断片化に関しても話していると思います。

アプリケーション上の理由で、パフォーマンスを心配するのではなく、NULLまたは固定文字列のどちらが必要かを自問する必要があります(これに関連するパフォーマンスの問題がすでに発生している場合を除く)。

これはパフォーマンスに影響を与える可能性があることは事実ですが、行サイズが制限を超えた場合にのみ問題が発生し始めるはずです。テーブルの内部表現の最大行サイズは65,535バイトです。それを超えないのであれば、固定文字列とNULLのパフォーマンスの違いについて考える価値はありません。

CHAR型を選択することもできます。これは、常に同じ長さであり、断片化を引き起こすことはないためです。ただし、NULLではなく空の値を格納する必要があります。

于 2013-03-02T20:01:31.447 に答える