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

    • Loader

      Разделы для авторов программ   18.08.2016

      Внимание: Софтфорум открывает двери для разработчиков программного обеспечения! Разработчик может создать раздел поддержки его программы. Это позволяет не создавать свой форум поддержки (хостинг, настройка ресурса и т.п.) а получить сразу настроенный ресурс с возможностью авторизации через соцсети. Для создания раздела необходимо обратиться к @Loader
    • Loader

      О вложениях и подписях   10.02.2017

      Внимание! Все вложения и подписи необходимо загружать непосредственно на софтфорум либо прикреплять ссылками на другие https ресурсы. Связано это с переходом форума на https и усилением защиты и безопасности ресурса. Подробнее.

Bingo

Новички
  • Публикации

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

  • Посещение

Репутация

0

О Bingo

  • День рождения 05.09.1990

Контакты

  • Skype
    mrbingo23

Информация

  • Пол
    Мужской
  • Город
    СПб
  • Интересы
    web-программирование (преимущественно бэкенд), программирование C#
  • Операционная система
    Windows 8
  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 для проверки существования города и страны в базе не есть хорошо в плане производительности. Возможно есть другие варианты реализации?
×