MySQL查询count(*)、count(1)、count(field)的区别收集
2017-10-22 14:22
519 查看
经过查询研究得出这个和MySQL中用什么引擎有关,比如InnoDB和MyISAM在处理这count(*)、count(1)、count(field)都有不同的方式,还有就是和版本都有关系,不同的版本会对查询进行优化处理等等。
下面是网络上普遍的解释:
做查询优化时,可以根据官方文档和数据来进行尝试和调优,这样去处理才能根本解决问题。
参考:
https://segmentfault.com/a/1190000009208277
http://blog.163.com/bobile45@126/blog/static/960619922012915102919319/
https://segmentfault.com/q/1010000000761427
http://blog.csdn.net/unifirst/article/details/52153902
http://www.111cn.net/database/mysql/53202.htm
http://blog.csdn.net/lzm18064126848/article/details/50491956
下面是网络上普遍的解释:
count(*)对行的数目进行计算,包含NULL count(column)对特定的列的值具有的行数进行计算,不包含NULL值。 count()还有一种使用方式,count(1)这个用法和count(*)的结果是一样的。 任何情况下select count(*) from tablename是最优选择; 尽量减少select count(*) from tablename where COL = ‘value’这种查询; 杜绝select count(COL) from tablename where COL2 = ‘value’的出现。 如果表没有主键,那么count(1)比count(*)快。 如果有主键,那么count(主键,联合主键)比count(*)快。 如果表只有一个字段,count(*)最快。 count(1)跟count(主键)一样,只扫描主键。count(*)跟count(非主键)一样,扫描整个表。明显前者更快一些。 若含有where语句,则会优先where中条件索引。
做查询优化时,可以根据官方文档和数据来进行尝试和调优,这样去处理才能根本解决问题。
参考:
https://segmentfault.com/a/1190000009208277
http://blog.163.com/bobile45@126/blog/static/960619922012915102919319/
https://segmentfault.com/q/1010000000761427
http://blog.csdn.net/unifirst/article/details/52153902
http://www.111cn.net/database/mysql/53202.htm
http://blog.csdn.net/lzm18064126848/article/details/50491956
相关文章推荐
- mysql_num_fields与mysql_field_count的区别
- mysql_num_fields与mysql_field_count的区别
- Mysql查询优化之 触发器加中间表 方法优化count()统计大数据量总数问题
- Mysql中的count()与sum()区别
- MySQL的count查询超级慢?我是这么解决的
- mysql查询语句in和exists二者的区别和性能影响
- MySql查询select from 两个表与left join on的区别
- Oracle、MySQL和SqlServe分页查询的语句区别
- MySQL的简单COUNT查询(无WHERE子句)
- mysql查询语句in和exists二者的区别和性能影响
- 关于SQLServer和MySQL 查询分页语句区别
- Logstash收集MySQL单机单慢查询日志
- Mysql之count(*)统计查询数量为0的数据
- MySQL连接查询 内连接和外连接的区别
- Oracle、MySQL和SqlServe分页查询的语句区别
- Mysql中的count()与sum()区别详细介绍
- MySQL 和Oracle 查询区别
- 【mysql】SQL嵌套子查询和相关子查询的执行过程有什么区别(推荐)
- thinkphp查询的getField(),select()和find()的区别
- mysql中select的count星和count1有区别么