Может ли добавление большей специфичности к запросу SELECT сделать его быстрее?

У меня довольно большая таблица с более чем 150 000 записей. Он имеет множество полей, таких как country_id, region_id, city_id, latitude, longitude, postal_code, и это лишь некоторые из них.

Мне нужно выбрать из этой таблицы по широте и долготе, ничего больше. Мой запрос выглядит следующим образом:

SELECT * FROM `mytable` 
  WHERE `latitude` = '$latitude' 
  AND `longitude` = '$longitude';

Теперь, хотя моим единственным критерием для выбора из этой таблицы является широта / долгота, мне было интересно, ускорит ли добавление большей конкретности запрос вроде:

SELECT * FROM `mytable` 
  WHERE `city_id` = '320' 
  AND `latitude` = '$latitude' 
  AND `longitude` = '$longitude';

Мне кажется нелогичным, что добавление дополнительных условий в запрос ускорит его, но в то же время я сужаю количество возможных результатов с большим отрывом, сначала убедившись, что все выбранные записи относятся к определенному идентификатору города, который, как я знаю, находится в диапазоне широты и долготы, который я будет уточняться в следующем.

Всего может быть около 150 тыс. Записей, но только около 10 тыс. Из этого конкретного города.

Так ли это вообще разумно, или я просто делаю запрос более трудоемким?

5
задан Ken White 13 January 2012 в 22:48
поделиться