當前位置:成語大全網 - 書法字典 - mysql select count和select count的效率如何?

mysql select count和select count的效率如何?

優化摘要:

1.在任何情況下,從xxx中選擇COUNT(*)都是最佳選擇;

2.最小化select count(*)from XXX where col = ' XXX '的查詢;

3.杜絕select count(col)from tablename where col = ' XXX '的出現。(其中col不是主鍵)

環境:

MySQL版本:5.0.45

操作系統:Windows XP SP3

數據表1:斯芬克斯

+———-+——————+——+—–+———+—————-+

| Field | Type | Null | key | Default | Extra |

+———-+——————+——+—–+———+—————-+

| id | int(10)無符號| no | pri | NULL | auto_increment |

| til | varchar(100) | no | | | |

|內容|正文|無|無|無|無

| dataline | int(11)| no | | ||

+———-+——————+——+—–+———+—————-+

記錄數量:1120100

查詢1:

mysql & gt從sphinx中選擇count(*)作為totalnum

+———-+

|總數|

+———-+

| 1120100 |

+———-+

65438+集合中的0行(0.00秒)

問題2:

mysql & gt從sphinx中選擇count(*)作為totalnum,其中id & gt1000;

+———-+

|總數|

+———-+

| 1119100 |

+———-+

集合中的1行(2.17秒)

問題3:

mysql & gt從sphinx中選擇count(*)作為totalnum,其中id & gt1000;

+———-+

|總數|

+———-+

| 1119100 |

+———-+

集合中的1行(0.61秒)

問題4:

mysql & gt從sphinx中選擇count(*)作為totalnum,其中id & gt1000;

+———-+

|總數|

+———-+

| 1119100 |

+———-+

集合中的1行(0.61秒)

查詢5:

mysql & gt從sphinx中選擇count(id)作為totalnum

+———-+

|總數|

+———-+

| 1120100 |

+———-+

65438+集合中的0行(0.00秒)

問題6:

mysql & gt從sphinx中選擇count(til)作為totalnum,其中id & gt1000;

+———-+

|總數|

+———-+

| 1119100 |

+———-+

集合中的1行(1分38.61秒)

查詢7:

mysql & gt從sphinx中選擇count(id)作為totalnum,其中id & gt11000;

+———-+

|總數|

+———-+

| 1109100 |

+———-+

集合中的1行(0.61秒)

查詢8:

mysql & gt從sphinx中選擇count(id)作為totalnum

+———-+

|總數|

+———-+

| 1120100 |

+———-+

集合中的1行(0.03秒)

結論:

當select count()沒有where條件時,select count(*)和select count(col)消耗的查詢時間幾乎相同。

當select count()有where條件時,select count(col)消耗的查詢時間明顯比select count(*)多壹個數量級。