簡體   English   中英

如何更快地計算mySQL數據庫中的條目?

[英]How can I count entries in mySQL database faster?

我正在計算我的SQL數據庫中的條目:

$sql = "SELECT * FROM files WHERE id = ?";
$q = $pdo->prepare($sql);
$q->execute([$id]);
$rowCount =$q->rowCount();

$rowCount的結果為500000。但是要輸出此單個數字需要5秒鍾! 是否有可能更快地獲得此結果?

使用COUNT()函數https://dev.mysql.com/doc/refman/8.0/en/counting-rows.html

$sql = "SELECT COUNT(*) FROM files WHERE id = ?";

還要確保“ id”是索引列: https : //dev.mysql.com/doc/refman/8.0/en/mysql-indexes.html

  1. 將*替換為一個字段(使用自動遞增ID)-這將減少時間。
  2. 對該字段編制索引。 -如果您使用索引字段,則查詢性能將提高。

SELECT * ... ,然后用PHP進行計數,需要將所有行的所有列都鏟回PHP。 付出很大的努力卻幾乎沒有收獲。

SELECT COUNT(col) ...由MySQL進行計數,但必須檢查col是否為NULL 它需要獲取每一行的col值。

SELECT COUNT(*) ...以最有效的方式對行進行計數。 這涉及尋找“最小”索引(如果沒有二級索引,則查找整個表),並對其進行計數。

必須了解INDEXes ,才能進入數據庫! 這只是它們的一個用途。

暫無
暫無

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

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