簡體   English   中英

在PDO中,如果int被引用為字符串,那么性能是否存在差異?

[英]In PDO is there a difference in performance if a int is quoted as a string?

如果在准備好的PDO查詢中將整數綁定為字符串,那么性能是否存在差異? 在Mysql中,如果值綁定為int或字符串,則查詢可以正常工作,但是在執行此操作時性能是否有任何差異?

$pdo = new PDO(
    "mysql:host={$host};port={$port};dbname={$dbname};charset=utf8", 
    $username, 
    $password
);
$statement = $pdo->prepare("SELECT * FROM `table` WHERE `id` = :param");

// Is there any performance difference between the two rows below
$statement->bindValue(":param", 5);
$statement->bindValue(":param", 5, PDO::PARAM_INT);

$statement->execute();

綁定參數和指定其類型之間是否有任何區別,或者只是將其引用為字符串?

如果你想完全采用你指定類型的方法比你沒有指定類型的方法稍快,默認類型是PDO::PARAM_STR

如果你運行它100萬次,平均值如下:

  • 指定的int類型:0.53秒( $stmt->bindValue(":param", 5, PDO::PARAM_INT);
  • 沒有指定類型:0.66秒( $stmt->bindValue(":param", 5);
  • str類型sepcified:0.70秒( $stmt->bindValue(":param", 5, PDO::PARAM_STR);

使用PHP 5.6.3版進行測試; 32位Windows;

根據我的經驗,沒有這樣的表現不同。 MySQL會自動將字符串轉換為數字(取決於列類型)。

如果我想要精確,PDO :: PARAM_STR比PDO :: PARAM_INT慢。 默認情況下,PDO :: PARAM_STR。

這是因為服務器必須檢查您的數據。

暫無
暫無

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

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