【发布时间】:2018-02-13 21:01:39
【问题描述】:
我是 MySQL 的新手,我第一次尝试使用 LEFT Joins。虽然返回的结果是预期的结果,但查询花费的时间太长了。
我有 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
任何帮助以及有关高级查询的任何文档都会令人惊叹
【问题讨论】:
-
uuuu baby....
subselect在哪里,join不是按键而是like,实际上不需要是like,因为没有%,也在连接条件中进行子选择...伙计,你是不是故意让它变慢?! -
哈哈哈@TuncayGöncüoğlu nahhh 我只是不知道我在做什么:(
-
@TuncayGöncüoğlu 之类的东西是我一直在做的测试遗留下来的,它在那里运行缓慢。这个查询我应该看什么?
-
我在下面支持 Rodrigo A. 的回答。他有正确的想法。但是,最重要的是,我会查看您的
3pla和xlba表结构,看看是否可以通过整数键字段而不是字符串搜索加上日期来完成连接。 -
uuuu -- 我们也不知道你在做什么。请尝试描述查询需要做什么。以及
naa和array中有哪些数据。同时提供SHOW CREATE TABLE。
标签: mysql performance left-join query-optimization