COUNT()是一个特殊的函数, 有两种非常不同的作用: 它可以统计某个列值的数量,也可以统计行数。 在统计列值时要求列值是非空的(不统计NULL)。 如果在COUNT()的括号中指定了列或者列的表达式, 则统计的就是这个表达式有值的结果数。 因为很多人对NULL理解有可题, 所以这里很容易产生误解。 如果想了解更多关于SQL语句中 NULL
的含义, 建议阅读一些关于SQL语句基础的书籍. (关于这个话题, 互联网上的一些信息息是不够精确的。)
COUNT()的另一个作用是统计结果集的行数。当MySQL确认括号内的表达式值不可能为空时,实际上就是在统计行数. 最简单的就是当我们使用COUNT(*)的时候,这种情况下通配符*并不会像我们猜想的另那样扩展成所有的列, 实际上它会忽略所有的列而直接统计所有的行数。
我们发现一个最常见的错误就是, 在括号内指定了一个列却希望统计结果集的行数。 如果希望知道的是结果集的行数, 最好使用 COUNT(*),这样写意义清晰,性能也会很好。
摘自 《高性能MYSQL》第三版 6.7.1 优化COUNT()查询。
最新评论
昨天发现的,然后在application.yml中配置“hibernate.dialect.storage_engine=innodb”。但是自动生成的表还是不会设置为innoDB,看了底层源码。这个配置也是没有加载到的 原来是要在hibernate.properties中加这个配置。感谢
将virtualbox虚拟网卡驱动卸载了,然后就会好了,但是这个时候virtualbox虚拟网络就无法使用了,重新安装一下virtualbox就好了
我也发现了这个注释:注释“Use "hibernate.dialect.storage_engine=innodb" environment variable or JVM system property instead.” ----- 坑啊。。。。。。。
卸载蓝牙驱动·在设备里面找,一般在网卡那里 卸载重启就行了
高