Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Bingo

Новички
  • Постов

    1
  • Зарегистрирован

  • Посещение

Информация о Bingo

Достижения Bingo

0

Репутация

  1. С базой MySQL работает веб-приложение, поэтому запросы должны быть максимально оптимизированы на скорость выполнения. Есть 3 связанные таблицы: 1) Главная таблица содержит ряд полей, среди которых поле-индекс town_id связывающее ее со 2й таблицей 2) таблица town содержит поля: town_id (bigint) PRIMARY AUTO_INCREMENT country_id (int) INDEX town (varchar) поля country_id и town объединены в ключ UNIQUE 3) таблица country country_id (int) PRIMARY AUTO_INCREMENT country (varchar) UNIQUE При INSERT или UPDATE главной таблицы данные от пользователя поступают в виде town=Город country=Страна соответственно выполняю ряд запросов: INSERT IGNORE INTO country (country) VALUES('Страна'); INSERT IGNORE INTO town (country_id, town) VALUES(LAST_INSERT_ID(), 'Город'); UPDATE main_table SET town_id=LAST_INSERT_ID() WHERE ... Проблема в том что если INSERT IGNORE не вставил новую запись (при совпадении UNIQUE полей) то LAST_INSERT_ID() возвращает некорректное значение. Выполнять 2 лишних запроса SELECT для проверки существования города и страны в базе не есть хорошо в плане производительности. Возможно есть другие варианты реализации?
×
×
  • Создать...