MySQL的sum函数优化

来源:互联网 发布:购买的淘宝音乐怎么用 编辑:程序博客网 时间:2024/05/08 07:08

有一张表,结构如下 :

  
  1. +------------------+--------------+------+-----+---------+----------------+
  2. | Field            | Type         | Null | Key | Default | Extra          |
  3. +------------------+--------------+------+-----+---------+----------------+
  4. | ID               | bigint(20)   | NO   | PRI | NULL    | auto_increment |
  5. | DTYPE            | varchar(31)  | YES  |     | NULL    |                |
  6. | COUNT            | int(11)      | YES  |     | NULL    |                |
  7. | STATUS           | varchar(255) | YES  |     | NULL    |                |
  8. | TYPE             | varchar(255) | YES  |     | NULL    |                |
  9. | BACKENDRECORD_ID | bigint(20)   | YES  | MUL | NULL    |                |
  10. | FRONTRECORD_ID   | bigint(20)   | YES  | MUL | NULL    |                |
  11. +------------------+--------------+------+-----+---------+----------------+
tab表数据量是百万级或者千万级的,以下该查询语句的查询时间较长。

SELECT STATUS, SUM(COUNT) FROM tab GROUP BY STATUS ;

在mysql优化的方法中,有这么两条:

经常同时存取多列,且每列都含有重复值可考虑建立组合索引;

组合索引要尽量使关键查询形成索引覆盖,其前导列一定是使用最频繁的列。

所以你可以试试下面方法:在STATUS和COUNT两字段上建立组合索引,以STATUS为前导列(如果该字段值很长,可以指定长度)

ALTER TABLE tab ADD KEY(STATUS(10),COUNT);

总结:使用恰当的索引使sql的效率倍增,类似sum(),min(),max()这些都需要在字段上建索引。

0 0
原创粉丝点击