http://justcoding.iteye.com/blog/2116837
SELECT count(*) FROM tablename;百万级别的数据也能很快返回结果,但是如果加了where条件之后速度直接慢下来了
当没有WHERE语句对于整个mysql的表进行count运算的时候
MyISAM类型的表中保存有总的行数,而当添加有WHERE限定语句的时候Mysql需要对整个表进行检索
从而得出count的数值
1、利用DISTINCT统计不重复的记录
如:SELECT COUNT( DISTINCT id ) FROM tablename;//计算talbebname表中id不同的记录有多少条
2、返回记录不同的id的具体值
SELECT DISTINCT id FROM tablename;
注意:2的这种查发只能用在一个字段上,如果是SELECT DISTINCT id,name FROM tablename;查询出来的结果返回的是 id与name同时相同才会被过滤,只有id或者name有相同的是不会过滤掉的;
mysql4.1以上可以用group_concat
另一种解决办法是:SELECT id, type, count(DISTINCT id) FROM tablename group by id;//一定要加group by id
或者select id,type from a group by id;这样也行吖
用distinct的时候,如果它有索引,mysql会把它转成group by的方式执行
mysql无法远程连接:1看给没给访问权限 服务其本地用外网账号登陆
2以上都正确那就防火墙阻止或者ip地址不对