Mysql查询运行非常慢。表中有1000000行。我已将explain查询添加到问题中。这需要10-11秒。我有多个条件,不断变化的基础上用户的输入。是否有可能提供唯一的索引。解释查询id -1
select_type -SIMPLE
表-sellers
-ref类型
possible_keys -quarter,quarter_2,comp_idx1,index_all,qc
key -qc
key_len -32
参考-const
行数-399782
额外的-Using,其中
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发布于 2018-11-20 14:58:08
您可以将索引添加到“cm”列。它将比以前更快
发布于 2018-11-20 15:31:17
在特定查询中,MySQL一次只能使用一个索引。在您的示例中,您需要检查多个列。您需要在(quarter, category, cm)上添加一个复合索引,以获得更好的性能:
ALTER TABLE sellers
ADD INDEX comp_idx1(quarter, category, cm);https://stackoverflow.com/questions/53387705
复制相似问题