如何在mysql中优化大表?

时间:2013-06-18 21:09:01

标签: mysql optimization indexing bigdata

我的表有近30 M记录,大小为6.6 GB。我需要从中查询一些数据并使用group by和order by。查询数据需要花费太长时间,我多次失去与DB的连接......

我将所有必填字段的索引作为键和复合键。我还能做些什么来使查询更快?

示例查询:

select id, max(price), avg(order) from table group by id, date order by id, location.

3 个答案:

答案 0 :(得分:0)

使用EXPLAIN query,其中查询是您的查询。例如:EXPLAIN select * from table group by id, date order by id, location

您将看到My​​SQL分析您的查询并显示其查找的索引的表。可能你没有足够的(足够的)指数。

答案 1 :(得分:0)

我认为你不能。没有过滤器(WHERE子句)和AVG,必须读取整个表。

我唯一能想到的是拥有一个带有ID,AVG_ORDER,MAX_PRICE(或任何你需要的)的新表,并在插入/更新新行时使用触发器或存储过程对其进行更新。

ID上的索引,PRICE索引可能会帮助您,如果您不需要那个讨厌的平均值。

答案 2 :(得分:0)

索引不会对你有任何帮助。您正在对列进行平均,因此您必须读取表中的每一行。这需要时间。