mysql 近5万条数据的表 使用联表查询 出现服务器CPU占用过多,贴大神代码求优化指点!!!!!
有两张表分别为:lu_yccdd 和 lu_taizhang
使用的联表查询代码:
SELECT distinct(t.sc_time) sc_time,count(distinct(y.id)) total,count(distinct(t.cdd_id)) tjjg,(count(distinct(y.id))-count(distinct(t.cdd_id))) wtijg FROM lu_yccdd y,lu_taizhang t WHERE ( `status` IN ('1','2') ) AND ( `sc_time` LIKE '%%' ) GROUP BY t.sc_time LIMIT 15 这条联表查询代码起先在表数据还不是很多 一两万的时候是没出现任何问题的,但是现在表数据有近5万条的时候 查询结果 久久未能显示,CPU直接飙升近90%,浏览器直接卡机操作不了,是什么原因呢,应该怎么去优化或者是不是mysql的设置问题?
希望能有大神给我解答!在此谢过了!!!!

解决方案 »

  1.   

    你的语句好像有问题,既然是两张表链接查询,但是链接的字段没看到啊。select a.*,b.* from a,b where a.xx=b.xx and xx 不是应该这样么?
      

  2.   

    explain结果,贴出来,我帮你分析下原因。
      

  3.   


    不是啊,这段语句是没有问题的,我这两张表有共同的字段的啊 就是y.id = t.cdd_id,在这里我只是想要数据差而已 而不是 通过共同字段查询显示其他字段 所以是不需要 a.xx=b.xx 这样的!这段语句结果显示是可以执行的。就是数据上升到几万条以后执行就很慢,然后CPU直接飚了。我贴出来是想请各位看看有没有其他优化的方法!
      

  4.   


    哥~我也想explain啊,但是这个一执行 直接就卡机了。只能关闭数据库再重启,不知道为什么,泪奔...
      

  5.   


    哥~我也想explain啊,但是这个一执行 直接就卡机了。只能关闭数据库再重启,不知道为什么,泪奔...去error日志里面看看 报错信息吧,把报错信息贴出来,大家看看。
      

  6.   


    哥~我也想explain啊,但是这个一执行 直接就卡机了。只能关闭数据库再重启,不知道为什么,泪奔...去error日志里面看看 报错信息吧,把报错信息贴出来,大家看看。我已经explain出来了,哥帮我分析分析
      

  7.   

    你看到type下面,全是ALL,你都没有走索引呢。你全表扫面呢。 笛卡尔积5W*5W是多少,你自己算算吧。
      

  8.   

    贴出来你的表结构以及 连表查询sql语句吧。
      

  9.   


    这个是查询语句:
    SELECT distinct(t.sc_time) sc_time,count(distinct(y.id)) total,count(distinct(t.cdd_id)) tjjg,(count(distinct(y.id))-count(distinct(t.cdd_id))) wtijg FROM lu_yccdd y,lu_taizhang t WHERE ( `status` IN ('1','2') ) AND ( `sc_time` LIKE '%%' ) GROUP BY t.sc_time LIMIT 15下面是表结构:1、lu_yccdd 2、lu_taizhang 
      

  10.   

    sc_time, status两字段先建上索引再说吧。
    查询用不上索引,那基本上是悲剧。