gpt4 book ai didi

MySQL 查询需要 5 分钟才能执行

转载 作者:行者123 更新时间:2023-11-29 10:38:04 24 4
gpt4 key购买 nike

我对 MySQL 很陌生,第一次尝试使用 LEFT Join。虽然返回的结果符合预期,但查询所需的时间太长。

我要加入 3 个表,当我单独运行查询时,数据将在 0.0002 秒内返回。通过连接,查询最多需要 300 秒。

evmbd 有 6012 行需要返回,我只想将 xlba 和 3pla 表中的一列连接到 naa

我一直在阅读有关优化 LEFT JOIN 查询的内容,并在 naa 列上的所有 3 个表上添加了 INDEX。

SELECT e.cluster,e.vm,e.TotalCapacityGB,e.naa,p.array,x.array
FROM evmbd AS e
LEFT JOIN xlba AS x ON x.naa like replace(e.naa,'naa.','') AND x.date = (select max(date) from xlba )
LEFT JOIN 3pla AS p ON p.naa = replace(e.naa,'naa.','') AND p.date = (select max(date) from 3pla )
WHERE e.date = (select max(date) from evmbd)
GROUP BY e.cluster, e.vm
ORDER BY e.cluster, e.vm

任何帮助以及有关高级查询的任何文档都会很棒

最佳答案

我不知道你的表格,但这也许会有帮助:

DECLARE @MAX_XLBA DATETIME
DECLARE @MAX_3PLA DATETIME
DECLARE @MAX_EVMBD DATETIME

SET @MAX_XLBA = (select max(date) from xlba)
SET @MAX_3PLA = (select max(date) from 3pla)
SET @MAX_EVMBD = (select max(date) from evmbd)

SELECT e.cluster,e.vm,e.TotalCapacityGB,e.naa,p.array,x.array
FROM evmbd AS e
LEFT JOIN xlba AS x ON x.naa = LTRIM(RTRIM(SUBSTRING(e.naa,4,15))) AND x.date = @MAX_XLBA
LEFT JOIN 3pla AS p ON p.naa = LTRIM(RTRIM(SUBSTRING(e.naa,4,15))) AND p.date = @MAX_3PLA
WHERE e.date = @MAX_EVMBD

也许如果在查询运行时不计算日期,性能可能会更好。您所做的替换也是如此。

问候

关于MySQL 查询需要 5 分钟才能执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46057116/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com