[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Запись из массива в БД
to0n1
Добрый вечер ! Суть такова есть таблица стран

`tour_countries` (`id`, `title`)

и таблица городов

`tour_cities` (`id`, `country_id`, `title`

мне нужно сделать вот что ....

есть массив отелей
10 тысяч элементов. в нем содержаться данные в таком вот виде


[9535] => Array
(
[0] => Holiday Inn Sofia
[1] => 5
[2] => София
[3] => Болгария
)


задача такова перебрать массив циклом foreach

проверить есть ли такой город (4 елемент массива) в базе. если нету
делаем селект из таблицы стран по названию страны берем id и делаем новую запись в таблицу городов. Далее делаем селект нужного города и только тогда пишем в таблицу новый отель ...


делал обычными запросами .. тобишь
SELECT count(*) FROM `tour_cities` WHERE `title` = '$array[4]'


но это создает огромную нагрузку на сервер :(

как оптимально делать такой перебор данных ??
пробывал таблицу стран выгружать в массив и потом функцией in_array получать key массива и таким образом брать id страны .. но нагрузка тоже большая !! вобще нужне просто совет как правильно организовать !!!

Всем заранее спасибо !!



Спустя 9 минут, 27 секунд (9.09.2011 - 20:14) kristall написал(а):
Выбери города и страны перед циклом и помести их в массив. А затем уж в цикле сравнивай.

Спустя 2 минуты, 59 секунд (9.09.2011 - 20:17) to0n1 написал(а):
Да но ведь если города нет в массиве я пишу его в базу .. после записи каждого нового города перезаписывать массив городов ?

Спустя 10 минут, 11 секунд (9.09.2011 - 20:27) kristall написал(а):
Тогда сначала перебери все города, занеси их в массив, а затем массив слей в БД. Запросы к БД самое тяжелое место, их надо свести к минимуму. А оперативу, наоборот, не жалей.

Спустя 14 минут, 22 секунды (9.09.2011 - 20:42) to0n1 написал(а):
Спасибо за советы буду думать !!

Спустя 2 дня, 11 часов, 45 минут, 15 секунд (12.09.2011 - 08:27) linker написал(а):
По id
... WHERE `id` IN (...)
ну и индексы расставить.

Спустя 6 часов, 44 минуты, 13 секунд (12.09.2011 - 15:11) inpost написал(а):
to0n1
Делай выборку по индесксным полям, или поставь по тому полю индекс. А вообще, я бы советовал как Линкер, именно выборку делать по ID, по которому уже primary индекс стоит.

linker
http://my.jetscreenshot.com/7950/20110912-zcc5-6kb - ты на кое-кого похож smile.gif

Спустя 14 минут, 23 секунды (12.09.2011 - 15:26) linker написал(а):
Да вроде не похож.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.