溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Mysql中如何優(yōu)化select count

發(fā)布時間:2022-01-14 16:04:18 來源:億速云 閱讀:162 作者:小新 欄目:數(shù)據(jù)庫

這篇文章主要介紹了Mysql中如何優(yōu)化select count,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

1.任何情況下SELECT COUNT(*) FROM tablename是最優(yōu)選擇;

2.盡量減少SELECT COUNT(*) FROM tablename WHERE COL = ‘value’ 這種查詢;

3.杜絕SELECT COUNT(COL) FROM tablename的出現(xiàn)。

COUNT(*)與COUNT(COL)

網上搜索了下,發(fā)現(xiàn)各種說法都有:

比如認為COUNT(COL)比COUNT(*)快的;

認為COUNT(*)比COUNT(COL)快的;

還有朋友很搞笑的說到這個其實是看人品的。

在不加WHERE限制條件的情況下,COUNT(*)與COUNT(COL)基本可以認為是等價的;

但是在有WHERE限制條件的情況下,COUNT(*)會比COUNT(COL)快非常多;

具體的數(shù)據(jù)參考如下:

> SELECT COUNT(*) FROM cdb_posts where fid = 604;

+————+

| COUNT(fid) |

+————+

| 79000 |

+————+

1 row in set (0.03 sec)

mysql> SELECT COUNT(tid) FROM cdb_posts where fid = 604;

+————+

| COUNT(tid) |

+————+

| 79000 |

+————+

1 row in set (0.33 sec)

mysql> SELECT COUNT(pid) FROM cdb_posts where fid = 604;

+————+

| COUNT(pid) |

+————+

| 79000 |

+————+

1 row in set (0.33 sec)

COUNT(*)通常是對主鍵進行索引掃描,而COUNT(COL)就不一定了,另外前者是統(tǒng)計表中的所有符合的紀錄總數(shù),而后者是計算表中所有符合的COL的紀錄數(shù)。還有有區(qū)別的。

COUNT時的WHERE

簡單說下,就是COUNT的時候,如果沒有WHERE限制的話,MySQL直接返回保存有總的行數(shù)

而在有WHERE限制的情況下,總是需要對MySQL進行全表遍歷。

優(yōu)化總結:

1.任何情況下SELECT COUNT(*) FROM tablename是最優(yōu)選擇;

2.盡量減少SELECT COUNT(*) FROM tablename WHERE COL = ‘value’ 這種查詢;

3.杜絕SELECT COUNT(COL) FROM tablename的出現(xiàn)。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Mysql中如何優(yōu)化select count”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業(yè)資訊頻道,更多相關知識等著你來學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI