1

我有一个表,其中包含一组约 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 决定忽略索引。

是这样吗,如果是这样,我可以强制使用索引还是确保避免全表扫描?

4

1 回答 1

0

注意是正确的,简单地向下调整 LIMIT 意味着使用了索引。确实很明显。

于 2012-03-29T12:19:12.567 回答