MySQL查询运行非常缓慢,总和和按选项分组

时间:2018-11-20 06:54:04

标签: mysql

MySQL查询运行非常慢。 表中有1000000行。我在问题中添加了解释查询。这需要10-11秒。我有多个条件会不断变化,而用户的输入会不断变化。是否可以提供唯一索引。 解释查询 id -1
select_type -SIMPLE
表-卖家
输入-ref
Possible_keys -quarter,quarter_2,comp_idx1,index_all,qc
键-qc
key_len -32
ref -const
行-399782
额外-在哪里使用

SELECT `cm`, 
       `week`, 
       `quarter`,
       SUM( `gmv`) as gmv, 
       SUM( `qty_sold`) as qty_sold, 
       SUM( `live_listing`) as live_listing , 
       SUM( `txn`) as txn, 
       SUM( `new_listings`) as new_listings, 
       SUM( `ended_listings`) as ended_listings 
FROM `sellers` 
where quarter=:quarter and 
      category=:category 
group by cm

CREATE TABLE `sellers` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `seller_id` varchar(20) NOT NULL,
 `am` varchar(30) NOT NULL,
 `rm` varchar(30) NOT NULL,
 `cm` varchar(30) NOT NULL,
 `week` varchar(10) NOT NULL,
 `quarter` varchar(10) NOT NULL,
 `site` varchar(20) NOT NULL,
 `category` varchar(20) NOT NULL,
 `format` varchar(20) NOT NULL,
 `price_band` varchar(20) NOT NULL,
 `gmv` double(11,2) NOT NULL,
 `qty_sold` int(11) NOT NULL,
 `live_listing` int(11) NOT NULL,
 `txn` int(11) NOT NULL,
 `new_listings` int(11) NOT NULL,
 `ended_listings` int(11) NOT NULL,
 PRIMARY KEY (`id`),
 KEY `seller_id` (`seller_id`),
 KEY `quarter` (`quarter`),
 KEY `week` (`week`),
 KEY `id` (`id`),
 KEY `category` (`category`),
 KEY `site` (`site`),
 KEY `cm` (`cm`),
 KEY `rm` (`rm`),
 KEY `am` (`am`)
) ENGINE=InnoDB AUTO_INCREMENT=1692618 DEFAULT CHARSET=utf8

2 个答案:

答案 0 :(得分:0)

您可以在“ cm”列中添加索引。它将比以前更快

答案 1 :(得分:0)

在特定查询中,MySQL一次只能使用一个索引。就您而言,您需要检查多个列。您需要在(quarter, category, cm)上添加一个综合索引,以提高性能:

ALTER TABLE sellers 
ADD INDEX comp_idx1(quarter, category, cm);