首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何优化查询而不使用子查询

如何优化查询而不使用子查询
EN

Stack Overflow用户
提问于 2022-12-02 07:39:14
回答 1查看 36关注 0票数 0

如何优化查询而不使用子查询

使用子查询非常慢!

代码语言:javascript
运行
复制
SELECT A.electric_machine mc,A.electric_imptwh meter,
DATE_FORMAT(FROM_UNIXTIME(A.electric_gts),'%Y-%m-%d %H:%i') dt,
(
  SELECT electric_imptwh
  FROM electric_meter
  WHERE electric_machine = 'MPR93'
  AND DATE(FROM_UNIXTIME(electric_gts)) = DATE(NOW() - INTERVAL 2 DAY)
  AND DATE_FORMAT(TIME(FROM_UNIXTIME(electric_gts)),'%H:%i') = DATE_FORMAT(DATE_ADD(FROM_UNIXTIME(A.electric_gts),INTERVAL 15 MINUTE),'%H:%i')
) meter2,
DATE_FORMAT(DATE_ADD(FROM_UNIXTIME(A.electric_gts),INTERVAL 15 MINUTE),'%Y-%m-%d %H:%i') dt2
FROM electric_meter A
WHERE A.electric_machine = 'MPR93'
AND DATE(FROM_UNIXTIME(A.electric_gts)) = DATE(NOW() - INTERVAL 2 DAY)
AND 
(
  (DATE_FORMAT(TIME(FROM_UNIXTIME(A.electric_gts)),':%i') = ':00') OR 
  (DATE_FORMAT(TIME(FROM_UNIXTIME(A.electric_gts)),':%i') = ':15') OR 
  (DATE_FORMAT(TIME(FROM_UNIXTIME(A.electric_gts)),':%i') = ':30') OR 
  (DATE_FORMAT(TIME(FROM_UNIXTIME(A.electric_gts)),':%i') = ':45')
)

EN

回答 1

Stack Overflow用户

发布于 2022-12-02 20:43:03

这些日期表达式中有许多不必要的复杂,它们防止使用任何索引。

你只想要两天前的数据?也不是昨天?

例如,我们的目标是避免围绕任何列名进行函数调用:

代码语言:javascript
运行
复制
DATE(FROM_UNIXTIME(A.electric_gts)) = DATE(NOW() - INTERVAL 2 DAY)

-->

代码语言:javascript
运行
复制
    A.electric_gts >= CURDATE() - INTERVAL 2 DAY
AND A.electric_gts  < CURDATE() - INTERVAL 1 DAY

根据数据类型,可能需要

代码语言:javascript
运行
复制
    A.electric_gts >= UNIX_TIMESTAMP(CURDATE() - INTERVAL 2 DAY)
AND A.electric_gts  < UNIX_TIMESTAMP(CURDATE() - INTERVAL 1 DAY)

并具有以下两个索引:

代码语言:javascript
运行
复制
INDEX(electric_machine, electric_gts,  electric_imptwh)
INDEX(electric_gts)

您可以使用包含unix_timestamp % (15*60) = 0的表达式检查四分之一小时的值。但是,没有桌子,我就不能说得更具体了。

可能读数不是在一分钟内就会出现吗?比如"23:15:02"?如果是这样的话,我将提供一个稍微混乱的表达式来处理这种情况。

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

https://stackoverflow.com/questions/74652295

复制
相关文章

相似问题

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