Mysql

MySQL Query 我們可以使用 php 計算行數以減少查詢中的 count(*) 時間還是沒有區別?

  • October 18, 2018

有以下查詢,其中第一個查詢返回找到的行數欄位,第二個返回實際行:

第一個查詢:

SELECT count(*) as total FROM individual i WHERE i.hid=:hhid AND i.hihh=:answer

第二個查詢:

$sql = "SELECT *

FROM 
      individual i
WHERE 
      i.hid=:hhid
AND 
      i.hihh=:answer";

$exec = $conn->prepare($checkHeadOfHH);
$exec->bindValue(':hhid', $hhid);
$exec->bindValue(':answer', $answer);
$count=$exec->rowCount();

我想知道當查詢包含解析器時count(),是否SELECT * FROM..先計算行數?如果是,那麼基本上,最好使用第二種方法以獲得更好的性能和更少的執行時間?

我問這個問題,因為有龐大的數據庫,我們總是執行count(*)查詢來檢查數據。

第一個將是最好的。伺服器只會在第一種情況下返回一個數字。在第二個它將返回一個表。

您可以通過為 where 子句中使用的列創建索引來獲得更好的性能。

通過評論回复您的回复

以我在第二個查詢中的方式創建索引?

不,創建索引是您在數據庫管理系統 MySQL 上執行的操作。第二個查詢將一個表從 MySQL 複製到 PHP,然後 PHP 對記錄進行計數。第一個查詢讓 MySQL 進行計數。這樣效率更高。

查看此連結以了解如何創建索引。

引用自:https://dba.stackexchange.com/questions/219852