0

这只是一个简单的问题,但是在为表进行更新过程时,例如说 Personinfo 是否可以接受

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

这对于对记录进行部分更新是可取的,还是无论如何都应该将所有信息发回?

4

1 回答 1

0

如果 exp1 不为空,IFNULL 将返回 exp2。

如果未设置您传递给存储过程的参数,我假设您想要返回一个固定的“名字”和“姓氏”字符串。我假设你也在谈论更新/选择和数据碎片化的速度。

您需要问自己,是否出于应用程序原因您想要 NULL 或固定字符串,而不是担心性能(除非您已经遇到与此相关的性能问题)。

确实,这会影响性能,但只有在您的行大小超过限制时才会开始导致问题 - 表的内部表示具有 65,535 字节的最大行大小。如果你不打算超过这个值,那么使用固定字符串和 NULL 之间的性能差异就不值得考虑了。

您还可以选择 CHAR 类型,因为它的长度始终相同,并且不会导致任何碎片。但是你应该存储一个空值而不是 NULL。

于 2013-03-02T20:01:31.447 回答