[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Избавиться от цикла в запросе к БД
optimus
Доброй ночи.
Подскажите кто знает как сделать лучше.
Я проверяю наличие некоторой записи в БД, просто делаю select строки по полю (добустим name) и если вернулось ноль строк то такой записи в БД нет(пишу эту строку в БД) соответственно если мускул возвращает хотя бы одну строку то такая запись есть (не записываем строку в БД).

система работает.
Проблема в том что я все это делаю в цикле , так как у меня массив таких строк. массив на 1000 элементов, таблица в базе на 1 млн. строк.

Если коротко, мне нужно записать в БД только те данные из массива , которых ещё нет в БД.
И главное избавиться от цикла с запросами.
Valick
совсем от циклов тут сложно избавится
1) разбиваем массив на части, допустим по 300 элементов
2) формируем в цикле 4 селекта и делаем выборку существующих значений в БД
3) исключаем из основного массива строки содержащиеся в БД
4) формируем 0-4 (в зависимости от оставшегося количества элементов) многострочных инсерта
___
итог вместо 2000 запросов имеем от 4-8 запросов, я думаю уже неплохой результат

_____________
Стимулятор ~yoomoney - 41001303250491
optimus
Спасибо. Все понятно кроме пункта 2.
Как можно за 4 селекта проверить 300 строк?

Valick
прочитайте про конструкцию IN
значения массива в купе с implode() и IN творят чудеса
кстати массив на 1000 элементов откуда берется и как формируется?

_____________
Стимулятор ~yoomoney - 41001303250491
Быстрый ответ:

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