在 MySQL 中,我們幾乎每天都會使用「COUNT」函數來幫助我們計算給定查詢的行數。每個開發者關於效能的最大困境是使用“COUNT(*)”還是“COUNT(id)”更好。
MySQL 最佳化器是 MySQL 的關鍵元件,負責確定執行給定 SQL 查詢的最有效方式。這部分在「COUNT」最快的困境中起著關鍵作用。那麼讓我們來解釋一下...
我們建立「users」表,該表將在「first_name」欄位上有一個索引:
CREATE table users ( id int NOT NULL AUTO_INCREMENT, first_name varchar(256) NOT NULL, PRIMARY KEY (id), INDEX idx_first_name (first_name) );
我們新增幾行並執行以下 2 個查詢:
EXPLAIN SELECT COUNT(id) FROM users;
EXPLAIN SELECT COUNT(*) FROM users;
當你執行這兩個SQL 查詢時,你會注意到它們使用相同的索引,「COUNT(*)」一點也不慢,MySQL 優化器負責這一點,它會在表中找到將要使用的索引。給出最好的表現。在這種情況下,兩個查詢將以相同的速度傳回數據,因為它們使用相同的索引,而 MySQL 優化器認為索引是最有效的。
MySQL 最佳化器會考慮許多有助於選擇最佳索引鍵的參數,以便給定查詢盡快傳回資料。
通常建議使用“COUNT(*)”,因為它允許 MySQL 優化器選擇最有效的方法,而“COUNT(column_name)”在需要僅計算非列的情況下特別有用。特定欄位中的 NULL 值。了解 MySQL 優化器的工作原理以及如何使用索引對於實現最佳查詢效能至關重要。
以上是了解 MySQL 查詢最佳化器:COUNT(id) 與 COUNT(*)的詳細內容。更多資訊請關注PHP中文網其他相關文章!