各位观众,早上好!我是老码农,今天咱们聊聊MySQL里一个看似简单,实则暗藏玄机的玩意儿:COUNT(*)、COUNT(1)和COUNT(column)。别看它们长得像三胞胎,性能上可是各有千秋。今天咱们就扒一扒它们的底裤,看看谁才是真正的效率之王! *一、COUNT():老大哥的底气** 先说说COUNT(*)。这玩意儿是SQL界的“老大哥”,它的作用就是统计表里有多少行数据,不管你这一行是不是全是NULL,它都照单全收。 — 统计user表有多少行 SELECT COUNT(*) FROM user; 简单粗暴,对吧?那它效率怎么样呢? 在早期的MySQL版本中,COUNT(*)确实需要扫描全表才能知道有多少行。但是!现在的MySQL已经做了优化。如果你的表使用的是MyISAM存储引擎,那么COUNT(*)会非常快!因为MyISAM引擎内部维护了一个计数器,专门记录表的行数。所以,执行COUNT(*)的时候,它直接把计数器的值拿出来就行了,根本不用扫描表。 但是,如果你的表使用的是InnoDB存储引擎,情况就有点不一样了。InnoDB引擎没有维护行数的计数器。所以,COUNT(* …
继续阅读“MySQL高级讲座篇之:`COUNT(*)`、`COUNT(1)`与`COUNT(column)`:揭示执行效率的细微差别。”