我有一个查询从〜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