前两天对一个近百万记录的表做了个查询,就一条语句执行起来超慢,动不动把MySQL 都弄死了。弄的俺郁闷了几天?语句很简单:select sum(A) from table_1 group by B 。Table_1 表做其他查询时都没有问题,我觉得应该是Group By 出了问题 ,网上有些同志说是 group 查询大表时 很 影响速度?俺也不知道是不是真的!!!麻烦各位高手给看看有没有什么办法给优化一下或者有没有其他办法给提供参考一下~~小弟谢谢了~~

解决方案 »

  1.   

    肯定会影响速度
    如果你的B没有建立索引,而且是字符类型的话,估计只有等死了:(
    你把A和B都建立好索引可能会快些
      

  2.   

    首先用mysql>explain select sum(A) from table_1 group by B;
    分析一下,上面的SQL语句查询的时候有没有用到索引,并不是你已经建了5个索引就一定会用到,再根据上面分析到的结果看看,该如何建索引mysql才会用到。
      

  3.   

    楼上正解。
    另外 ,mysql在 千万级别的数据上才会表现劣势。在百万级别跑的 非常快。
    你碰到的情况,只能说明,用的太烂
      

  4.   

    下列查询仅使用索引树就可解决(假设索引列是数字的): mysql> SELECT key_part1,key_part2 FROM tbl_name WHERE key_part1=val;
    mysql> SELECT COUNT(*) FROM tbl_name
               WHERE key_part1=val1 AND key_part2=val2;
    mysql> SELECT key_part2 FROM tbl_name GROUP BY key_part1;下列查询使用索引以排序顺序检索,不用一次另外的排序: mysql> SELECT ... FROM tbl_name ORDER BY key_part1,key_part2,...
    mysql> SELECT ... FROM tbl_name ORDER BY key_part1 DESC,key_part2 DESC,...10.5.4 MySQL怎样优化LEFT JOIN
      

  5.   

    mysql在 千万级别的数据上才会表现劣势。在百万级别跑的 非常快。