suellenmao
suellen爱吃肉
采纳率100%
2019-05-07 21:54 阅读 700

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

5

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条回答 默认 最新

  • 已采纳
    qq_23292875 Hefei19881002 2019-05-08 13:49
    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子句后面条件涉及到的列 按照从左到右的顺序添加到索引中
    
    点赞 评论 复制链接分享
  • u012976158 强化脑细胞 2019-05-08 08:57

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

    点赞 评论 复制链接分享
  • weixin_42080504 have_power 2019-05-08 09:10

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

    点赞 评论 复制链接分享
  • qq_22847605 qq_22847605 2019-05-08 14:02

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

    点赞 评论 复制链接分享

相关推荐