我有一个表,其中包含一组约 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 决定忽略索引。
是这样吗,如果是这样,我可以强制使用索引还是确保避免全表扫描?