【发布时间】:2012-03-29 11:51:04
【问题描述】:
我有一个包含约 40k 行样本集的表,每行包含一个点(经度和纬度)。我正在使用 MySQL 的空间扩展来查找边界内存在哪些点。
如果我在我知道结果很少的边界内进行搜索,则按应有的方式使用索引。但是,我的测试数据集主要由英国各地的位置组成(更大的实时数据集在百分比上可能相似)。当我在这个边界框内搜索时,没有使用索引,而是执行了全表扫描:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE ep ALL PRIMARY,location NULL NULL NULL 37221 Using where
因此,当 MySQL 期望找到的行数接近总行数时,它似乎决定忽略索引。
是这样吗?如果是这样,我可以强制使用索引或以其他方式确保避免全表扫描吗?
【问题讨论】:
-
发布您的查询。很可能你会得到很多结果。在这种情况下,避免遍历索引以返回大量结果,因为它不是必需的。
-
如果你能发帖
table_structure也很好。
标签: mysql optimization indexing spatial-index