有效更新用户档案

时间:2014-06-03 18:35:05

标签: mysql performance apache2

我想到了一些东西,我想把它反弹出来:

假设您有一个用户个人资料,其中包含10个用户可以编辑的字段,而不是所有字段都是必需的。发出更新命令时,它是否更有效:

A)收集所有填写或不填写的字段,并向服务器的DB发出一个包含所有更新语句

B)使用客户端验证来检查哪些字段已填写或更改,并选择仅发送和更新这些字段的SQL方法

C)创建分组,例如“updateRequiredFields(...)和updateExtraFields(...)”,如果更改只属于一个组,则会发出一个较小的传输,但如果两个都被编辑,则会发送两个传输

普遍共识?很明显,选项B是更冗长的方法,我只是想知道是否值得编写全部内容,或者它是否真的会对服务器产生明显的影响(想想“扩展为大数据”)。

1 个答案:

答案 0 :(得分:1)

您可以在数据库更新功能上执行以下操作:

public function updateFields(array $fields) {
   $updateQuery = array();
   foreach($fields as $fieldKey => $fieldValue) {
      //if $fieldValue is false, leave it unchanged
      if ($fieldValue !== false) {
         //NOTE: make sure you escape this or use PDO
         $updateQuery[] = $fieldKey . '=' . $fieldValue; 
      }
   }

   $query = 'UPDATE UserInfo SET ' . implode(",", $updateQuery) . ' WHERE ...';
}

您只需根据客户端修改的内容构建$fields数组,然后传入新值或传递false(如果没有更改)。