У меня есть таблица, содержащая выборочный набор из ~ 40 тыс. Строк, где каждая строка содержит точку (долгота и широта).Я использую пространственное расширение 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 решает игнорировать индекс при количестве строкон ожидает найти, что он близок к общему количеству строк.
Так ли это, и если да, могу ли я принудительно использовать индекс или иным образом гарантировать, что полное сканирование таблицы будет исключено?