我每天運行一個查詢來編譯統計信息 - 但它看起來效率很低。這是查詢:Mysql子選擇查詢優化
SELECT a.id, tstamp, label_id, (SELECT author_id FROM b WHERE b.tid = a.id ORDER BY b.tstamp DESC LIMIT 1) AS author_id
FROM a, b
WHERE (status = '2' OR status = '3')
AND category != 6
AND a.id = b.tid
AND (b.type = 'C' OR b.type = 'R')
AND a.tstamp1 BETWEEN {$timestamp_start} AND {$timestamp_end}
ORDER BY b.tstamp DESC
LIMIT 500
此查詢似乎運行速度非常慢。爲廢話命名道歉 - 我被要求不透露實際的表名稱。
有一個子選擇的原因是因爲外部select從表a得到一行,它從表b得到一行。但是也需要知道表b中的最新author_id,所以我運行一個子選擇來返回那個。我不想在php循環內運行另一個選擇 - 因爲這也是低效的。
它工作正常 - 我只需要找到一個更快得到這個數據集的方法。
@Matt:你應該嘗試提供的答案,upvote有幫助,並接受解決你的問題。如果他們都沒有,請考慮編輯您的問題以提供更多信息。 – 2010-01-23 08:08:50