group by 优化 加order by null


mysql> explain select uid,sum(times) from tbl_name group by uid\G;

*************************** 1. row ***************************

          id: 1

 select_type: SIMPLE

       table: tbl_name

        type: ALL

possible_keys: NULL

         key: NULL

     key_len: NULL

         ref: NULL

        rows: 10000

       Extra: Using temporary; Using filesort

1 row in set (0.00 sec)


mysql> explain select uid,sum(times) from tbl_name group by uid order by null\G;

*************************** 1. row ***************************

          id: 1

 select_type: SIMPLE

       table: tbl_name

        type: ALL

possible_keys: NULL

         key: NULL

     key_len: NULL

         ref: NULL

        rows: 10000

       Extra: Using temporary

1 row in set (0.00 sec)

默认情况下,Group by col会对col字段进行排序,这就是为什么第一语句里面有Using filesort的原因,如果你不需要对col字段进行排序,加上order by null吧,

要快很多,因为filesort很慢的。