首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用'group by‘的SQL的性能问题(MySQL)

使用'group by‘的SQL的性能问题(MySQL)
EN

Stack Overflow用户
提问于 2015-12-29 14:29:55
回答 1查看 41关注 0票数 3

我有一个如下的MySQL表(我使用的是MySQl 5.6):

代码语言:javascript
复制
CREATE TABLE `sm_query_1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `keyword` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `search_type_id` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL,
  `device_code` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL,
  `country_code` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL,
  `search_date` date DEFAULT NULL,
  `clicks` int(11) DEFAULT NULL,
  `impressions` int(11) DEFAULT NULL,
  `position` float DEFAULT NULL,
  `page_uri` text COLLATE utf8_unicode_ci,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

我需要在下面的SQL下运行:

代码语言:javascript
复制
SELECT
                *, SUM(clicks)total_click,
                SUM(impressions)total_impression,
                SUM(clicks)* 100 / SUM(impressions)ctr,
                AVG(position)position_avg
FROM
                `sm_query_1`
WHERE
                (
                 `search_date` >= '2015-10-01'
                AND `search_date` <= '2015-12-30'
                )
GROUP BY
                `keyword`
ORDER BY
                `total_click` DESC

当表'sm_query_1‘有600万条记录时(时间段: 2015-10-01 ~ 2015-12-30),这个SQL大约需要3-5分钟的运行时间。我尝试为列search_datekeyword创建索引,但是速度没有提高。

如何优化这个表结构和这个SQL命令?

(我想让这个SQL只运行<= 30s)

EN

回答 1

Stack Overflow用户

发布于 2015-12-29 15:27:58

我认为你应该使用基于更多可选列的综合指数

例如,交替尝试其中一个,并使用性能最好的

代码语言:javascript
复制
 CREATE INDEX my_index_name1
 ON `sm_query_1` ( `keyword`, `search_date` );

代码语言:javascript
复制
 CREATE INDEX my_index_name2
 ON `sm_query_1` ( `search_date` , `keyword`);

还可以尝试在

代码语言:javascript
复制
where    `search_date`  between  '2015-10-01' and  '2015-12-30'

而不是

代码语言:javascript
复制
where (
             `search_date` >= '2015-10-01'
            AND `search_date` <= '2015-12-30'
            )
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34505672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档