我有一個查詢從〜10,000的表中提取5條記錄。 order
子句不包含在索引中,但where
子句是。如何減少由MySQL掃描的行數
該查詢掃描大約7,700行來獲取這5個結果,這似乎有點多。不過,我明白,排序標準的複雜性使事情變得複雜。如果有的話,我可以減少掃描的行數嗎?
查詢看起來是這樣的:
SELECT *
FROM `mediatypes_article`
WHERE `mediatypes_article`.`is_published` = 1
ORDER BY `mediatypes_article`.`published_date` DESC, `mediatypes_article`.`ordering` ASC, `mediatypes_article`.`id` DESC LIMIT 5;
medaitypes_article.is_published
索引。
你可以發佈表聲明的相關位? – shylent 2009-11-23 06:55:09
在發佈的查詢前面放置'EXPLAIN',運行它併發布輸出。 – Asaph 2009-11-23 06:55:18
文章 http://dev.mysql.com/doc/refman/5.0/en/order-by-optimization.html – 2009-11-23 06:56:36