Поиск в базе данных с более чем 3 мил. записи - PullRequest
0 голосов
/ 05 октября 2009

Я использую базу данных Geonames для сайта бронирования отелей. База данных имеет две таблицы, одну для стран и одну для городов с более чем 3 мил. записей. Если я пытаюсь получить все города для определенной страны, запрос будет слишком медленным. Я думаю, потому что у меня нет определенного индекса.

Таблица стран имеет следующие поля:

  • iso_alpha2 (код страны)
  • имя
  • континент
  • 1012 * Население *

Таблица городов имеет следующие поля:

  • имя
  • asciiname
  • alternate_names
  • страна

Поле "страна" из таблицы городов относится к полю "iso_alpha2" в таблице стран.

Как я могу ускорить запрос?

P.S. Я использую MySQL.

Ответы [ 2 ]

1 голос
/ 05 октября 2009

Для этого запроса вам понадобится только таблица городов:

select name from cities where country = 'US'

Для этого запроса будет полезен индекс по стране.

1 голос
/ 05 октября 2009

Вам необходимо добавить индекс для поля, которое вы используете в предложении WHERE (в вашем случае это, кажется, поле страна ).

Редактировать : еще одна вещь - если у вас есть несколько условий в предложении WHERE, вам нужно добавить индекс, содержащий все поля, используемые в этом предложении (наличие отдельных индексов для полей не будет работать ). Однако в вашем случае я считаю, что индекс в поле страна должен подойти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...