首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只获取运行时/持续时间的MySQL查询,而不是获取结果

问只获取运行时/持续时间的MySQL查询,而不是获取结果
EN

Database Administration用户
提问于 2018-03-29 07:20:53
回答 1查看 222关注 0票数 0

我们正在针对我们的测试RDS实例运行很少的基准查询,以检查分区的效率,然后将其调整到目前没有分区的生产中。

我们有很少的时间序列数据表,因此基于RANGE( unix_timestamp(event_time) )的分区。我们对拥有数百万行的表集(分区表和非分区表)运行的查询花费了太多的时间,而我们现在却陷入了困境。

我们从MySQL工作台中可以很明显地看到,获取时间(依赖于网络)占据了相当长的时间。我们关心的只是我们运行的查询的运行时持续时间。我们是否可以跳过获取的结果部分,只获得相应查询的运行时持续时间?

我们尝试的查询示例:

代码语言:javascript
复制
SELECT  *
    FROM  app_event1
    WHERE  `event_time` BETWEEN '2018-01-01 00:00:01' AND '2018-02-30 23:59:59';

我们为节省时间所做的就是限制结果,

代码语言:javascript
复制
SELECT  *
    FROM  app_event1
    WHERE  `event_time` BETWEEN '2018-01-01 00:00:01' AND '2018-02-30 23:59:59'
    Limit  0,1000000;

这不符合现场场景。

EN

回答 1

Database Administration用户

发布于 2018-04-14 23:46:15

(我有太多的评论要评论.)

  • 请提供SHOW CREATE TABLE。有许多细节是不可能的。
  • 请提供EXPLAIN SELECT ...。我们需要讨论它是否真的在做任何修剪。
  • 这些查询返回了多少行?
  • 它们是真实的查询吗?--您真的需要所有列吗?您真的需要所有的行(而不是需要总结它们)吗?
  • 根据索引的不同,您可能会发现分区正在减缓操作,而不是加速操作。
  • 让我们看看真正的查询。
  • 下面的代码避免了计算结束日期、闰年等,并抓住了丢失的秒.

。

代码语言:javascript
复制
      event_time >= '2018-01-01'
  AND event_time  < '2018-01-01' + INTERVAL 2 MONTH

以我的经验来看,

  • PARTITION BY RANGE(event_time)的唯一目的是清除旧数据。
  • 对于日志表中的性能问题,汇总表是真正的“修正”。

一旦你已经解决了我的大部分意见,标题问题应该是没有意义的。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/202603

复制
相关文章

相似问题

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