你的位置:面向PHP >> 资讯 >> 数据库 >> Mysql >> 详细内容 在线投稿

MySQL count(*) 与 count(col) 查询效率比较

排行榜 收藏 打印 发给朋友 举报 来源: 网络    发布者:网友
热度124票  浏览25次 【共0条评论】【我要评论 时间:2010年1月14日 08:44
文章信息

来源:转载

面向PHPa*YD;J[H

优化总结面向PHPpFQkr1X_w(]

(B&E J-z7z T5i8[01.任何情况下SELECT COUNT(*) FROM xxx 是最优选择;面向PHP#^9c o c ^$b*I N
2.尽量减少SELECT COUNT(*) FROM xxx WHERE COL = ‘xxx’ 这种查询;面向PHP&\zo#OHYQ0X
3.杜绝SELECT COUNT(COL) FROM tablename WHERE COL = ‘xxx’ 的出现。(其中COL非主键)

)a mL?5lMH Lh0面向PHPd E |Jt!h

环境:面向PHP S;[B _+H&j5_)m
MySQL版本:5.0.45面向PHPW?f5p3|J#t2r8d
OS:Windows XP SP3面向PHP9F!jD+z_E O

面向PHPb X5},h f&v |

数据表一:sphinx面向PHPfo#v&J,j7Z0Fb0wjj+?
+———-+——————+——+—–+———+—————-+面向PHPqm8Z!Lv,{1UBv
| Field    | Type             | Null | Key | Default | Extra          |
"QhQ2W G8N'Mx1} y+np Z0+———-+——————+——+—–+———+—————-+
.kN5x%FoY0| id       | int(10) unsigned | NO   | PRI | NULL    | auto_increment |面向PHP:@*xN@.VLQN5k
| til      | varchar(100)     | NO   |     |         |                |面向PHP1Dy ZP[^p} N
| content  | text             | NO   |     |         |                |面向PHPR;KT:?1Ve.w D ~
| dataline | int(11)          | NO   |     |         |                |面向PHP{^P KXS
+———-+——————+——+—–+———+—————-+

8v^(S9c,T[0面向PHPw7cn RV6Ap

记录数:1120100面向PHPA;p+CC(i/R

面向PHPz{yeur0X d

查询一:

,v2c7B2S FK2ep K0

,GZ|H_@L#u9BA0mysql> select count(*) as totalnum from sphinx;
_fkc)OTF(O0+———-+面向PHPx(zV.PME/\ x
| totalnum |
\.|x g&s3tz0+———-+
jJ4R|S0nc0|  1120100 |面向PHPeYfR7F%LA
+———-+面向PHP%bxeIG P9Ry
1 row in set (0.00 sec)面向PHP5A^ L QK)J&Rw

面向PHPG mRIj2r

查询二:

w-H'Af7R0X0z'R.g0面向PHP}x/?^G;f7XzU

mysql> select count(*) as totalnum from sphinx where id>1000;
D*C3mw_9L0+———-+
4pPFn v'W0| totalnum |
2PFX |N*pM6~(}0+———-+面向PHP1rS4e:s*L2v q1|
|  1119100 |面向PHP*[ pQj5qt)@
+———-+面向PHP A@7y}`O#A2Q"d-_
1 row in set (2.17 sec)面向PHP/D/^2N&};L

:X| p'qy)lD9cJ8c0查询三:面向PHP f9@H0Fx;`:m:y J

面向PHPV*W)n0PnQ~D

mysql> select count(*) as totalnum from sphinx where id>1000;面向PHP:h.p6cc$K
+———-+面向PHPb)Q,^_g.d#Cl
| totalnum |面向PHPd&wf WK1XZUeu
+———-+
7T@|[.W]]l0|  1119100 |面向PHPY^ Z7wK$H,R
+———-+面向PHPjU,v5Bh!rBF4D,`
1 row in set (0.61 sec)面向PHPn&Oe;r5E

面向PHP(P%s O,d ?R*@

查询四:

~8wY[ jpM_0

|K[a8s%x0mysql> select count(*) as totalnum from sphinx where id>1000;
S;b~s5S VvBrt0+———-+
X P.UTy0| totalnum |
/t,c._{_6^] uo0+———-+
*E:r-Wf8o$`7o v0|  1119100 |面向PHPs8^;`l#y?
+———-+
s7@l R9Av~01 row in set (0.61 sec)

;IJ$D8W M c$R0面向PHPj*Z Ih&M F

查询五:

.x+]VWd"u%V|0

E i u:K/?\r{"c0mysql> select count(id) as totalnum from sphinx;面向PHP.v$I6t|#i"|
+———-+
\hC C4d M:C%sC0| totalnum |
/BPmT3rW_6O_0+———-+面向PHP| HgGT \R#e
|  1120100 |
#s~ u"a#Y"fh'b6\8P0+———-+面向PHP0n4Nc5ELH
1 row in set (0.00 sec)

-i0? t![M0

N2pT9E/K4m6\2V$b} }0查询六:

6J(fHDMg;S*R4xC0

+fT"|2u"yo0mysql> select count(til) as totalnum from sphinx where id>1000;
`'dQ:H3N&OW0+———-+
+{^ @'P U+V9\1I0| totalnum |面向PHP3ghW:aVmB4P#]
+———-+面向PHPNQd1\Z!@8k
|  1119100 |
*O-|^,f y I&Q7sl0+———-+
k_7D9l,e{J8A H01 row in set (1 min 38.61 sec)

'j5n%@/VY.Sj0面向PHP L9S!e(H#z*F:[

查询七:

t'I z_w b[a4DO0面向PHPJGB$G_GW\a3G

mysql> select count(id) as totalnum from sphinx where id>11000;
#XB'X(a4t0+———-+面向PHPO5x6O+T(Pr`(o s3b2n
| totalnum |面向PHPa b Y5nx0G'p
+———-+面向PHP\c.M:s:lQ|
|  1109100 |面向PHP-gI7|'j3~7eT i%Q
+———-+面向PHP5_HDh5`V
1 row in set (0.61 sec)面向PHP.AN$|]&q9]0t

P}6_,^)Y Jt+})a]0查询八:

9ij,Gf@f;]0面向PHPR t N+W+Hu

mysql> select count(id) as totalnum from sphinx;面向PHP u6C9?fV?
+———-+面向PHP:rO2V+w4lK G4{0S
| totalnum |
;|tKLGP0+———-+面向PHP"R"OP b5ui*DAP
|  1120100 |面向PHPVvkvi h7~i
+———-+
@kH"}Oc"Qs01 row in set (0.03 sec)

a0V#TQ"E5R;?0面向PHP0Rm!k[4F

结论:

+lB9S#y6l0面向PHP5FXf,d3B5|j2H8l

在 select count() 没有 where 条件的时候 select count(*) 和 select count(col) 所消耗的查询时间相差无几。面向PHP z6D8iJ [XNy
在 select count() 有 where 条件的时候 select count(col) 所消耗的查询时间 比 select count(*) 明显多出数量级的时间。面向PHP qRqBO1P\1@

TAG: MYSQL MySQL Mysql mysql MySql col count 效率 查询
顶:11 踩:9
对本文中的事件或人物打分:
当前平均分:-1.13 (32次打分)
对本篇资讯内容的质量打分:
当前平均分:-0.73 (37次打分)
【已经有35人表态】
上一篇 下一篇
发表评论

网友评论仅供网友表达个人看法,并不表明本网同意其观点或证实其描述。

查看全部回复【已有0位网友发表了看法】