Mysql
MySQL Query 我們可以使用 php 計算行數以減少查詢中的 count(*) 時間還是沒有區別?
有以下查詢,其中第一個查詢返回找到的行數欄位,第二個返回實際行:
第一個查詢:
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 進行計數。這樣效率更高。
查看此連結以了解如何創建索引。