我需要一些帮助优化MySQL查询或表MySQL的加入时间太长
当我运行此查询它.01s 650次返回的记录:
select mm, name, display, year
from tbl d
where active = 1 and tbl2_id = 'val' and lvl_id = 9
order by mm;
当我运行此查询它长达15秒返回与相同的记录:
select d.mm, d.name, d.display, d.year, a.year year2
from tbl d left join tbl a on d.mm = a.mm and a.tbl2_id = 'val2'
where d.active = 1 and d.tbl2_id = 'val' and d.lvl_id = 9
order by d.mm;
当我运行它,这样它也需要长达15秒:
select mm, name, display, year,
(select a.year from tbl a where a.mm = mm and a.tbl2_id = 'val2') year2
from tbl
where active = 1 and tbl2_id = 'val' and lvl_id = 9
order by mm;
表中有多个mm记录。我需要得到tbl2_id ='val'的所有记录,并且如果有这样的记录,那么tbl2_id ='val2'时,我需要val2记录中的“年份”值。 tbl目前有13k条记录,并且没有超过10条记录,所以我不认为这个查询应该超过15秒。我有索引mm,active,tbl2_id和lvl_id。
我已经做过类似的事情在MSSQL,几乎没有延迟。
你可以在你的查询上运行'EXPLAIN'并发布查询计划吗? http://dev.mysql.com/doc/refman/5.0/en/explain.html – thomaspaulb 2010-11-15 22:23:45