2010-09-22 122 views
2

我有一个大型的数据库(180k +行和增长速度快)的位置数据,并将它们绘制在谷歌地图上。对于给定的视口,我只想提供100个适用点的样本。因此,数据库是由lat/lng查询的,但如果我在这些行上放置索引,问题是100点的样本将位于视图端口的底部或顶部(取决于索引的使用方式) 。如果没有使用索引,那么这些点几乎是随机分布在视图端口上,这更加可取。我可以通过使用第三个非常随机的字段来创建文件夹,从而在索引结果上创建相同的效果。MySQL:有一个索引和一个小的文件夹或没有索引,没有文件夹更好吗?

因此,问题似乎是,什么更好:180k +行上的未索引查询或将看起来像4k行&的索引查询做文件?谢谢!

+0

对于第一:请确保您正确理解“filesort”一词:http://www.mysqlperformanceblog.com/2009/03/05/what-does-using-filesort-mean-in-mysql/ – zerkms 2010-09-23 01:12:14

+0

没有任何表示他不? ORDER BY RAND()总是使用filesort不是吗? – 2010-09-23 02:00:30

回答

2

你会找到很多理由反对使用“ORDER BY RAND()”,虽然它可能是在这种情况下非常有用,如果你指数领域,你会发现到评测结果是可以接受的:

mysql> select id from table where id > 10000 and id < 20000 order by rand() limit 0,10; 
+-------+ 
| id | 
+-------+ 
| 18560 | 
| 18408 | 
| 14058 | 
| 19090 | 
| 11100 | 
| 18945 | 
| 12656 | 
| 16549 | 
| 19321 | 
| 12003 | 
+-------+ 
10 rows in set (0.04 sec) 
+0

我目前的子句顺序只是伪随机的,但完全适合我需要的东西。实际上,随机排序可能只是额外的压力,不能用于任何目的 – user435281 2010-09-23 14:07:56

+0

如果您从性能角度来看问什么更好,那么您应该在控制台中使用MySQL的概要分析命令对两种方法进行基准测试。 – 2010-09-23 17:19:30

2

通过索引分析您的查询,但不包含它。我在dbForge Studio for MySQL中使用分析器。

相关问题