我需要一些幫助優化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