首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从查询执行中删除使用temporary和Filesort

从查询执行中删除使用temporary和Filesort
EN

Stack Overflow用户
提问于 2018-05-30 13:45:10
回答 1查看 38关注 0票数 0

我有一个表,几乎有90列,并且还在上面使用了范围分区。这个表有将近50lacs的记录。当我在查询中使用GROUP BY时,它在explain语句中显示"using temporary“和"filesort”。

查询:

代码语言:javascript
复制
 SELECT
 subscribe_time * 0.000001 AS start_date,
 subscribe_time * 0.000001 AS end_date,
 (
    IFNULL(
      ROUND(
         SUM(
          CASE WHEN(
              subscribe_duration > 20000 AND subscribe_status = '1'
              ) THEN 1 ELSE 0
          END
          ) /(
            SUM(
              CASE WHEN(subscribe_status = '1') THEN 1 ELSE 0
              END
           )
      ) * 100,
    2
  ),
  0
)
) AS subscribe_avg

FROM
  tbl_subscription a
WHERE
  1 AND subscribe_time > 0 AND subscribe_time BETWEEN "1525113000000000" AND "1524680999999999"
GROUP BY
  EXTRACT(
    YEAR
    FROM
       FROM_UNIXTIME(subscribe_time * 0.000001)
    ),
  EXTRACT(
    MONTH
    FROM
    FROM_UNIXTIME(subscribe_time * 0.000001)
  ),
  EXTRACT(
     WEEK
     FROM
     FROM_UNIXTIME(subscribe_time * 0.000001)
 ),
 EXTRACT(
   DAY
   FROM
   FROM_UNIXTIME(subscribe_time * 0.000001)
),
sub_user,
subscribe_ip,
subscribe_zone,
subscribe_approval

field1上已经提供了索引。field1不是我们的PK。总共给出了5列索引。

当我写GROUP BY查询的时候,执行起来差不多花了43秒。当我删除GROUP BY时,它花费了0.27秒的执行时间。

另外,当我们最后写"ORDER BY NULL“的时候,文件排序就被移除了。但是我不想在查询中使用ORDER BY。如何减少查询执行时间?

此外,我也尝试从单个分区获取数据,但查询仍然花费了相同的时间。从单个分区获取数据的查询:

代码语言:javascript
复制
 SELECT field1, field2 FROM TABLE_NAME PARTITION(p1) WHERE 1 AND 
   field1='SOME_VALUE' GROUP BY field1;

给出一些减少查询执行时间的建议。

EN

回答 1

Stack Overflow用户

发布于 2018-06-01 08:57:06

GROUP BY的第一个表达式可能可以替换为

代码语言:javascript
复制
subscribe_time

或者也许

代码语言:javascript
复制
FLOOR(subscribe_time * 0.000001)

我认为没有必要仅仅为了做GROUP BY而拆分它。

你能提供SHOW CREATE TABLE吗?-我们需要查看索引,分区,可能还有其他细节。具体地说,它是否具有其中一项或两项

代码语言:javascript
复制
PARTITION BY RANGE(subscribe_time)
INDEX(subscribe_time)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50597122

复制
相关文章

相似问题

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