php - MySQL:有索引和小文件排序更好还是没有索引和文件排序更好?

标签 php mysql indexing geolocation query-optimization

我有一个包含位置数据的大型数据库(超过 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/

相关文章:

php - Vtiger6如何与现有网站集成

php - Mysql不显示任何结果

mysql - 更新 MySQL 中相关列的列中的增量值

sql-server - SQL Server 索引 View 列精度

如果在 ON 子句中使用 OR,则 MySQL 不会在 JOIN 中使用可用索引

php - curl 错误 : Recv failure: Connection reset by peer - PHP Curl

php - WooCommerce:仅获取特定税级商品的折扣总额

Mysql 多重排序依据

mysql - 为什么索引会使查询变慢?

php - 完整的noob,SOAP PHP,带有身份验证的请求,存储在mySQL中