以下MySQL查詢的速度如此之慢?優化緩慢的MySQL查詢
我已經嘗試向DocumentRevision.document和Document.status添加索引,但仍然通常需要永久執行查詢(似乎如果按順序查詢,查詢加速)。是否有另一種更有效的方式來實現相同的結果?查詢獲取數據庫中所有可用文檔的所有最新修訂版本。有兩張桌子。 Document和DocumentRevision。文檔表只包含標識和狀態字段,而DocumentRevision包含所有數據和「文檔」標識字段,以便它知道它是哪個文檔的修訂版本。
SELECT rev.document as documentId, rev.id as revId, rev.name as name,
rev.dateCreated as dateCreated, rev.documentOrder as documentOrder
FROM (
SELECT Document.id as docId, MAX(DocumentRevision.id) as maxRevId
FROM Document, DocumentRevision
WHERE Document.id = DocumentRevision.document AND Document.status = 0
GROUP BY Document.id
) AS x
INNER JOIN DocumentRevision as rev on rev.document = x.docId
AND rev.id = x.maxRevId
ORDER BY dateCreated DESC;
'EXPLAIN'說什麼? –
平均有多少修訂(每個文檔)?是否有很多沒有修改的文檔? – Quassnoi
平均數百。沒有很多文件沒有很多的修訂。實際上目前大約有200多種不同的文件。 – JSour