За последние 24 часа нас посетили 16388 программистов и 1678 роботов. Сейчас ищут 932 программиста ...

Подскажите как можно оптимизировать это?

Тема в разделе "PHP для новичков", создана пользователем kentastik77, 25 май 2014.

  1. kentastik77

    kentastik77 Активный пользователь

    С нами с:
    21 мар 2010
    Сообщения:
    89
    Симпатии:
    0
    Есть код, который проверяет новые данные и при необходимости записывает их в базу. В базу нужно писать только новые данные, которых раньше не было. Сейчас это выглядит так:
    Получаю данные и складываю их в массив. Далее, я обращаюсь к базе Select записи, где есть такие значения, если нет, значений, то добавляю в базу строчку из массива. Всё это гоняю в цикле еще к тому же. Мне думается, я делаю всё неправильно. Укажите правильный путь пожалуйста.
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    В исходных данных есть что-то уникальное, благодаря чему ты находишь записи в таблице. Если этот признак еще не объявлен как primary key или unique key, сделай это. И просто делай insert, без предварительного select. Лишнего не запишется!

    Как вариант, можно делать INSERT ... ON DUPLICATE KEY UPDATE
     
  3. kentastik77

    kentastik77 Активный пользователь

    С нами с:
    21 мар 2010
    Сообщения:
    89
    Симпатии:
    0
    дубликаты уже очищены по unique key. Прикол в том, что я могу понять есть ли такой товар в базе только если у него совпадают несколько полей, например цена и название могут быть не уникальными, но вот если совпало и то и другое сразу, то скорее всего имеем дело с дублем. Возникла идея сделать хеш по нескольким полям и сравнивать его, но не думаю, что это сильно упростит жизнь.
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    тот же ключ по нескольким полям
     
  5. kentastik77

    kentastik77 Активный пользователь

    С нами с:
    21 мар 2010
    Сообщения:
    89
    Симпатии:
    0
    Хотя да, если сделать колонку с ключами, их сделать уникальными и сразу писать, то наверное я существенно сокращу манипуляции :) Спасибо за наводку на мысль.