有一张表,结构如下 :
- +------------------+--------------+------+-----+---------+----------------+
- | Field | Type | Null | Key | Default | Extra |
- +------------------+--------------+------+-----+---------+----------------+
- | ID | bigint(20) | NO | PRI | NULL | auto_increment |
- | DTYPE | varchar(31) | YES | | NULL | |
- | COUNT | int(11) | YES | | NULL | |
- | STATUS | varchar(255) | YES | | NULL | |
- | TYPE | varchar(255) | YES | | NULL | |
- | BACKENDRECORD_ID | bigint(20) | YES | MUL | NULL | |
- | FRONTRECORD_ID | bigint(20) | YES | MUL | NULL | |
- +------------------+--------------+------+-----+---------+----------------+
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()这些都需要在字段上建索引。