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