15
回答
提高 mysql count 速度

 select
        count(*)
    from
        ctc_sms_ent this_ 
    where
       this_.nstat=0 
        and this_.timeMillis>=0
        and this_.timeMillis<9999999999999

用的是long型的索引timeMillis,加了划线部分后,速读慢了8秒

举报
共有15个答案 最后回答: 6年前

不是很懂优化,平时单表最大的数据量也就几百万,都是定期结存到汇总表后备份清理,所以数据永远不会超过千万。

select
        count()
    from
        ctc_sms_ent this_ 
    where
       this_.nstat=0 
        and this_.timeMillis>=0

        and this_.timeMillis<9999999999999

仅对最后的条件加了括号,再试试看。

--- 共有 3 条评论 ---
老程@虫☌☌☌兒☌ : 我一般用count(0),不清楚是否对性能有影响。 6年前 回复
虫☌☌☌兒☌@老程 : 不好意思,是count(*) 6年前 回复
老程OMG,count(0)括号里面的东西怎么没了?@红薯 @Roddy 6年前 回复

引用来自“老程”的答案

不是很懂优化,平时单表最大的数据量也就几百万,都是定期结存到汇总表后备份清理,所以数据永远不会超过千万。

select
        count()
    from
        ctc_sms_ent this_ 
    where
       this_.nstat=0 
        and this_.timeMillis>=0

        and this_.timeMillis<9999999999999

仅对最后的条件加了括号,再试试看。

一样额,啊,你们百万的数据,count(*)多久呢

引用来自“老程”的答案

目前3011746,我远程查询用时

1.375 sec

查询条件一样吗,用的innodb 还是myisam(这个很快),我用的innodb的,不过去掉划线部分速度还行

引用来自“老程”的答案

考虑在相关字段添加索引看看吧。
这个不考虑了,这张表的插入速度已经很慢了。那你用个没有建索引的字段查查,把你like的那个字段换换,如果还是很快的话,我怀疑你的是不是innodb,如果真是,那就是配置文件可以优化了。
顶部