任何人都可以在 MySQL 中调整给定的查询吗
Posted
技术标签:
【中文标题】任何人都可以在 MySQL 中调整给定的查询吗【英文标题】:Can anyone tune given query in MySQL 【发布时间】:2021-03-15 18:14:50 【问题描述】:请帮助调整此查询
select
substr(Extend(current,year to second)- extend(outr.eventDateTime,year to second)+INTERVAL(300) MINUTE(3) TO MINUTE,-8) as duration,
else 'Hold' end as state
from
A as outr,
B as rs
where
eventDateTime = (select max(eventDateTime) from A as innr where outr.aID=innr.aID and outr.pID=innr.pID)
and eventDateTime >= Date(current)
and rs.rID = outr.aID
and rs.pID = outr.pID
order by rName
【问题讨论】:
添加EXPLAIN PLAN
.... 的输出,以及使用的表的 DDL,以及 UDF Extend
的定义。
是的,显示explain select substr....
和show create table A
和show create table B
和select version()
的输出。还要说明查询花费了多长时间以及您希望花费多长时间的目标
是的,数据库服务器现在已关闭。你能告诉我运行的确切命令吗?因为我是 mysql 的初学者。所以我可以得到所有结果并告诉你。
请使用现代连接语法,而不是 80 年代的逗号分隔语法。
另外,请在每列前面加上表名(或别名),以便我们了解每列的来源。这对你来说可能很明显,但对我们来说不是。特别是eventDateTime
和rName
。
【参考方案1】:
对于初学者,请添加此索引:
INDEX(aid, pid)
这闻起来像“分组最大值”。查看我添加的标签。
【讨论】:
以上是关于任何人都可以在 MySQL 中调整给定的查询吗的主要内容,如果未能解决你的问题,请参考以下文章
使用未在 Mysql 中排序的多个日期范围查询给定月份的日期范围间隙