2013-08-24 47 views
0

优化MySQL的SELECT我从这个表做定期从庞大的表

SELECT * FROM sensor_data_1sec LIMIT 491160, 30 

http://test.dev.brown.sk/sensor_data_1sec.zip

它tooks约0.06S。我认为这太多了。 MySQL服务器是我与英特尔酷睿i7,8 GB RAM的PC上,Windows 7的

采取phpMyAdmin的上一看: enter image description here

当然花了很多时间很少,当它被缓存。但是有可能使它更快解决吗?

+0

您的问题中的查询与屏幕截图中的查询不同,您有一个不属于的“WHERE”。 – Barmar

+0

查询中有什么优化?它没有连接条件,没有WHERE测试。 – Barmar

+0

phpMyAdmin说它花了0.0269s,而不是0.06s。你似乎错过了一个数字。所以它比你想象的快两倍。 – Barmar

回答

1

百分之六(或百分之二百)的一秒是罚款。基本的规则是用户不应该等待太久,我通常会在半秒钟内完成。

有没有什么事情可能让你困扰的0.06s,如果你知道它会这么慢? :-)

另一方面,假设查询中没有排序子句的结果集中的特定顺序是不明智的。通常也希望明确选择列而不是使用*

+0

在编辑之前,你是对的,phpMyAdmin说2百分之一,而不是百分之六。 – Barmar

+0

@Barmar,我认为php管理员是为了比较,OP明确指出0.06。然而,无论是0.02还是0.06都没关系,它仍然非常快。我会编辑以清楚说明,谢谢。 – paxdiablo

+0

我同意这一点,+1。 – Barmar

0

由于没有进行深度扫描,速度很慢。 LIMIT中的大偏移很糟糕,如果运行EXPLAIN,您会看到它需要一个临时表来处理这个问题。这个临时文件是基于磁盘的,因为它需要关闭491190条记录的内存。所以你现在正在杀死MySQL的性能。