突然发现mysql教程对于count(*)的不同处理会造成不同的结果
比如执行
select count(*) from tablename
即使对于千万级别的数据mysql也能非常迅速的返回结果
而对于
select count(*) from tablename where…..
mysql的查询时间开始攀升
仔细查阅累下手册,发现当没有where语句对于整个mysql的表进行count运算的时候
myisam类型的表中保存有总的行数,而当添加有where限定语句的时候mysql需要对整个表进行检索
从而得出count的数值
突然又想起来看到的不少新兴的php教程程序对于count的处理并没有很好的意识到这点
记录下
顺便提下mysql的distinct的关键字有很多你想不到的用处
1.在count 不重复的记录的时候能用到
比如select count( distinct id ) from tablename;
就是计算talbebname表中id不同的记录有多少条
2,在需要返回记录不同的id的具体值的时候可以用
比如select distinct id from tablename;
返回talbebname表中不同的id的具体的值
3.上面的情况2对于需要返回mysql表中2列以上的结果时会有歧义
比如select distinct id, type from tablename;
实际上返回的是 id与type同时不相同的结果,也就是distinct同时作用了两个字段,必须得id与tyoe都相同的才被排除了,与我们期望的结果不一样
4.这时候可以考虑使用group_concat函数来进行排除,不过这个mysql函数是在mysql4.1以上才支持的
5.其实还有另外一种解决方式,就是使用
select id, type, count(distinct id) from tablename
虽然这样的返回结果多了一列无用的count数据(或许你就需要这个我说的无用数据)
返回的结果是 只有id不同的所有结果和上面的4类型可以互补使用,就是看你需要什么样的数据了
茶杯头甜蜜终章dlc 官方手机版v1.0.0.3
下载火柴人传说暗影格斗内置菜单 最新版v3.0.1
下载荒野乱斗测试服 安卓版v61.10.3
下载荒野乱斗彩虹服 安卓版v61.10.3
下载寒霜启示录 安卓版v1.25.10
寒霜启示录是一款生存模拟游戏,不少玩家可能对于末日都有着自己
末日城堡免广告版 安卓最新版v0.7.1
末日城堡免广告版是一款非常好玩的模拟经营类游戏,内部可以不看
甜蜜人生模拟器 最新版v1.4.5
甜蜜人生模拟器是一款非常好玩的模拟恋爱手游,玩家在这里能够对
武器锻造师内置功能菜单 v10.4
武器锻造师内置菜单版是游戏的破解版本,在该版本中为玩家提供了
开放空间overfield 安卓版v1.0.5
开放空间Overfield是一款箱庭养成经营手游,让你在广阔