当GROUP BY和ORDER BY表达式不同时优化SQL查询?
问题描述:
从MySQL文档中的排序优化,我引用...当GROUP BY和ORDER BY表达式不同时优化SQL查询?
在某些情况下,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
Explain输出...
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
问候
答
GROUP BY通常与像SUM函数(),以总记录中使用。您的查询似乎不需要group by子句。以下工作会更好吗?
SELECT * FROM(product
) WHERE Category1
= 'PC' 和Category2
= '桌面' ORDER BY product_code
,reviews
递减,popularity
递减 LIMIT 10
您可以创建一个索引来匹配课程。
http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html
我需要GROUP BY来缓解一些编程操作。除了删除GROUP BY之外是否还有其他方法 - 可能是一些子查询或其他内容? – vikmalhotra 2010-09-01 10:14:27
您是否检查过现有查询正在返回的记录,如果您没有进行汇总分组,有时结果可能会出现意外。 – Jaydee 2010-09-01 10:50:19