从Mysql文档中的优化顺序,我引用......
在某些情况下,MySQL无法使用 用于解析ORDER BY的索引, 虽然它仍然使用索引来查找 与WHERE子句匹配的行。 这些案例包括以下内容:
- 您有不同的ORDER BY和GROUP BY表达式。
这有什么有用的解决方法吗?
我的查询是......
SELECT *
FROM (`product`)
WHERE `Category1` = 'PC'
AND `Category2` = 'desktop'
GROUP BY `product_code`
ORDER BY `reviews` desc, `popularity` desc
LIMIT 10
解释输出......
select_type: SIMPLE
table: product
type: ref
possible_keys: Category1_idx
key: Category1_idx
key_len: 390
ref: const, const
rows: 508
Extra: Using where; Using temporary
此致
答案 0 :(得分:1)
GROUP BY通常与SUM()等函数一起使用来聚合记录。您的查询似乎不需要group by子句。以下工作会更好吗?
SELECT *
FROM(product
)
在哪里Category1
='PC'
和Category2
='桌面'
ORDER BY product_code
,reviews
desc,popularity
desc
限制10
您当然会创建一个匹配的索引。
http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html