Я настраиваю загрузчик (используя php) для моего клиента, где они могут выбрать CSV (в заранее определенном формате) на своем компьютере для загрузки. CSV, скорее всего, будет 4000-5000 строк. Php обработает файл, прочитав каждую строку CSV и вставив ее непосредственно в таблицу БД. Эта часть проста.
Однако, в идеале, прежде чем добавлять эти данные в таблицу базы данных, я хотел бы просмотреть 3 столбца (A, B и C) и проверить, есть ли у меня совпадающая комбинация из этих 3 полей в таблица И ЕСЛИ ТАК Я бы скорее ОБНОВИЛ эту строку, а не добавил. Если у меня нет подходящей комбинации этих трех столбцов, я хочу продолжить и ВСТАВИТЬ строку, добавляя данные в таблицу.
Сначала я подумал, что я мог бы сделать столбцы A, B и C уникальным индексом в моей таблице, а затем просто вставлять каждую строку, как-то обнаруживать «неудачный» INSERT (из-за ограничения моего уникального индекса), а затем сделать обновление. Кажется, что этот метод может быть более эффективным, чем создание отдельного запроса SELECT для каждой строки, просто чтобы посмотреть, есть ли в моей таблице соответствующая комбинация.
Третий подход может состоять в том, чтобы просто добавить ВСЕ, не используя уникальный индекс MySQL, а затем получить только последнюю уникальную комбинацию, когда клиент позднее запросит эту таблицу. Однако я стараюсь избегать попадания в эту тонну тонны бесполезных данных.
Мысли о лучших практиках или умных подходах?