0

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

我在所有必要的字段上都有索引作为键和复合键。我还能做些什么来加快查询速度?

示例查询:

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

3 回答 3

0

use EXPLAIN query, where query is your query. For example: EXPLAIN select * from table group by id, date order by id, location.

You'll see a table where MySQL analyses your query and shows which indices it looks for. Possibly you don't have sufficient (god enough) indices.

于 2013-06-18T21:11:48.450 回答
0

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

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

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

于 2013-06-19T04:00:23.470 回答
0

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

于 2013-06-19T04:19:41.997 回答