簡體   English   中英

插入值:預處理語句還是多個值查詢?

[英]Inserting values : prepared statement or multiple values query?

在您看來,從性能的角度來看,在表中插入多個值的最佳解決方案是什么?

1 - 准備好的聲明:

$usersId = Users::getAllId($this->sql);
$prep = $this->sql->prepare('INSERT INTO notification_actualites (idUser,idNews) VALUES(:idU,:idN)');
foreach($usersId as $idU)
{
    $prep->execute(array(
        ':idU' => $idU,
        ':idN' => $idN
    ));
}

2 - 或使用多值查詢:

$usersId = Users::getAllId();
$values='';
foreach($usersId as $id)
{
    $values.='(\''.$id.'\','.$idActu.'),';
}
$values = substr($values,0,strlen($values)-1);
$this->sql->query('INSERT INTO notification_actualites VALUES'.$values);

安全方面在這里不是問題,在這兩種情況下,代碼都適用於防止sql注入。

一個有爭議的答案將不勝感激:)

謝謝

我更喜歡后面的方法。 每個數據庫請求都必須發送到數據庫服務器並接收結果 - 這需要時間,特別是如果數據庫服務器在不同的計算機上運行。

time_to_prepare_query + time_sending_query + time_to_executing_query + time_receiving_results + time_processing_results

使用第二種方法時,我不必計算time_sending_query和time_receiving_results n次( n是發送到db的行數)。

另一方面,您對解決可能出現的各個錯誤(如重復鍵(盡管ON DUPLICATE KEY可以省去一些麻煩),錯誤值等)的控制較少。

您的方法的選擇將一如既往地取決於您的應用程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM