我有一个包含位置数据的大型数据库(超过 180k 行并且增长很快),并将它们绘制在谷歌地图上。对于给定的视口(viewport),我只想提供 100 个适用点的样本。因此,数据库是按纬度/经度查询的,但如果我在这些行上放置索引,问题是 100 个点的样本将位于 View 端口的底部或顶部(取决于索引的使用方式) 。如果不使用索引,这些点几乎随机地分散在视口(viewport)中,这是更理想的。我可以通过第三个几乎随机的字段进行文件排序,对索引结果产生相同的效果。
所以,问题似乎是,哪个更好:针对 180k+ 行的无索引查询,或将查看 4k 行之类的内容并进行文件排序的索引查询?谢谢!
最佳答案
您会发现许多反对使用“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)
关于php - MySQL:有索引和小文件排序更好还是没有索引和文件排序更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3770702/