mysql 百万数据库 count 1秒内出结果

sql1:

SELECT
            count(*)
        FROM
            t_order T  FORCE INDEX(cc)
        where
            T.del_status = '0'
            and T.is_project_order = '0'
            and T.firstperson = ''
            AND T.serverUserId = 'cdbcd902dbe411e89c777cd30ae00302

执行计划:

图片说明

sql2:

select 
            count(T.id)
        from t_order T 
        where
        T.is_project_order = '0'
            and T.del_status = '0'
            and T.`status` not in ( 'ORDERCOMPLETE')

执行计划:
图片说明

t_order表 索引
图片说明

请教如何优化到1s内

目前百万数据库中执行下来是2s多

4个回答

SELECT count(1) FROM (SELECT T.id from  from t_order T WHERE  T.is_project_order = '0' and T.del_status = '0'
 and T.`status` not in ( 'ORDERCOMPLETE'))

    加全覆盖索引 也就是说 把where子句后面条件涉及到的列 按照从左到右的顺序添加到索引中

加联合索引试一下。。。。

昨天给你的建议你毫无反应,是没听懂还是觉得不靠谱...mysql的优化途径没那么多,无非那几个方面,如果你有DBA权限的话,还可以从配置上优化,但是你提供的信息还是不够,比如说你的表结构,你的sql是不是动态的等等,都需要考虑,包括条件字段的一些信息。

suellenmao
suellen爱吃肉 昨天的问题已经解决了 count优化我已经改了 但是实现效果甚微
一年多之前 回复

尽量少用not in(用in来代替),然后用索引的字段不能有空值,否则索引无效。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问