【问题标题】:Can anyone tune given query in MySQL任何人都可以在 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 Ashow create table Bselect version() 的输出。还要说明查询花费了多长时间以及您希望花费多长时间的目标
  • 是的,数据库服务器现在已关闭。你能告诉我运行的确切命令吗?因为我是 mysql 的初学者。所以我可以得到所有结果并告诉你。
  • 请使用现代连接语法,而不是 80 年代的逗号分隔语法。
  • 另外,请在每列前面加上表名(或别名),以便我们了解每列的来源。这对你来说可能很明显,但对我们来说不是。特别是eventDateTimerName

标签: mysql performance sql-tuning groupwise-maximum


【解决方案1】:

对于初学者,请添加此索引:

INDEX(aid, pid)

这闻起来像“分组最大值”。查看我添加的标签。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-12
    • 2019-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-17
    • 1970-01-01
    相关资源
    最近更新 更多