MySQL组速度非常慢
我有下面的SQL查询MySQL组速度非常慢,mysql,performance,group-by,Mysql,Performance,Group By,我有下面的SQL查询 SELECT CustomerID FROM sales WHERE `Date` <= '2012-01-01' GROUP BY CustomerID 尝试在(日期、客户ID)上放置索引 请参阅mysql手册以优化分组查询:- 如果您使用以下EXPLAIN,您可以了解mysql是如何生成结果的:- EXPLAIN SELECT CustomerID FROM sales WHERE `Date` <= '2012-01-01' GROUP BY Custo
SELECT CustomerID FROM sales WHERE `Date` <= '2012-01-01' GROUP BY CustomerID
尝试在(日期、客户ID)上放置索引
请参阅mysql手册以优化分组查询:-
如果您使用以下EXPLAIN
,您可以了解mysql是如何生成结果的:-
EXPLAIN SELECT CustomerID FROM sales WHERE `Date` <= '2012-01-01' GROUP BY CustomerID
EXPLAIN SELECT CustomerID FROM sales WHERE`Date`这一个不是会更快并实现同样的效果吗
SELECT DISTINCT CustomerID FROM sales WHERE `Date` <= '2012-01-01'
从sales中选择DISTINCT CustomerID,其中'Date`不知道表架构是什么样子,很难确定,但如果在Date
和CustomerID
上添加多列索引,可能会有所帮助。这就省去了MySQL对groupby
语句进行完整表扫描的麻烦。因此,请尝试更改表sales ADD INDEX(日期,CustomerID)
试试这个:
SELECT distinct CustomerID FROM sales WHERE `Date` <= '2012-01-01'
从sales中选择distinct CustomerID,其中'Date`我遇到了相同的问题,我将关键字段更改为相同的排序规则,从而解决了问题。要连接表的字段具有不同的Collate值。是否可以发布表架构(创建表的脚本)不确定是否发布了实际查询。但是在这个查询中,如果没有分组函数,那么需要分组依据
什么呢?Aziz,我需要返回customer的唯一值在这种情况下,在查询中使用DISTINCT
,并删除分组依据
。mysql中类似于selectdistinct CustomerID…
的内容DISTINCT只是groupby的一个特例,selectdistinct对我来说比selectby…groupby快得多。在一个具有适当索引和排序结果的1500万行表上,SELECT…GROUP BY大约需要3.5秒,SELECT DISTINCT大约需要0.1秒。作为一个刚刚开始掌握优化查询和表的窍门的人,这个小金块是非常宝贵的。谢谢。@ArthurGoldsmith不用担心:)
SELECT distinct CustomerID FROM sales WHERE `Date` <= '2012-01-01'