2010-09-22 66 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中使用分析器。

相關問題