【发布时间】:2012-06-12 18:23:57
【问题描述】:
给定一个简化为以下形式的查询:
select b.field1
from table_a a
inner join table_b b on b.field1 = a.field1
left join table_c c on c.field1 = a.field1
left join table_d d on d.field1 = b.field1
left join table_e e on e.field1 = b.field6
group by b.field1,
b.field2,
b.field3,
b.field4,
b.field5,
e.field2,
e.field3
;
对于一定数量的数据,它在 Oracle 中运行时间为 20 秒。 Oracle 中没有任何索引。
迁移到 MySQL 中的查询不想完成(在几分钟内执行)。有问题的每个字段都在 MySQL 中建立索引。 Explain 表示一切正常。
仍然无法工作后,分组字段获得了多列索引。还是什么都没有。
MySQL 性能仍然存在巨大泄漏可能是什么问题?有什么方法可以加快速度吗?
【问题讨论】:
-
您能否确认两个测试中的基础架构相同?
-
是的,是一样的。另外,我将该字段放在选择中,否则它会在 Oracle (Pl/SQL) 中引发错误。只是想尽可能地减少查询。
-
我的朋友,并不是所有的性能都与索引有关,还包括引擎、缓存、缓冲区等......
-
加载后你分析过你的表吗?
-
分析和加载是什么意思?
标签: mysql sql performance oracle