从巨大的表优化MySQL SELECT

时间:2013-08-24 21:36:35

标签: mysql performance query-optimization

我正在做常规

SELECT * FROM sensor_data_1sec LIMIT 491160, 30

来自此表:http://test.dev.brown.sk/sensor_data_1sec.zip

耗时约0.06秒。我认为这太过分了。 MySQL服务器在我的PC上,配备Intel Core i7,8 GB RAM,Windows 7。

看看phpMyAdmin: enter image description here

当然缓存它需要花费很少的时间。但是有可能让它更快地被解除吗?

2 个答案:

答案 0 :(得分:1)

秒的百分之六十(或百分之二)是罚款。基本规则是用户不应该等待太久,我通常会把它放在半秒钟。< / p>

如果你知道它会变得那么慢,那么你可能已经在0.06s中实现过你所困扰的东西吗? : - )

顺便说一句,从没有排序子句的查询中假设结果集中的特定顺序是不明智的。通常也更喜欢明确选择列而不是使用*

答案 1 :(得分:0)

这很慢,因为深度扫描。 LIMIT中的大偏移量非常糟糕,如果运行EXPLAIN,您将看到它需要一个临时表来处理这个问题。而这个临时是基于磁盘的,因为它需要内存关闭491190记录。所以你现在正在杀死MySQL的表现。