ФорумРазработкаБазы данных → Задачка.

Задачка.

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 21 августа 2009 г. 12:35, спустя 3 часа 44 минуты 29 секунд

    IN работает моментально, не надо гнать на него ….
    Сапожник без сапог
  • AndryG

    Сообщения: 237 Репутация: N Группа: Адекваты

    Spritz 21 августа 2009 г. 12:38, спустя 3 минуты 46 секунд

    INSERT INTO hotels (name,region,type_)
    SELECT :name, :region, :type
    FROM rdb$database – Это таблица с одной строкой. Для mySQL, кажись, можно просто убрать предложение FROM
    WHERE NOT EXISTS(SELECT * FROM hotels WHERE name = :name AND region = :region AND type_ = :type)
    Логика запроса:
    - вставить, то что выберем
    - выбирать будем наши данные, а не данные из БД. (обманка, типа, получилась … вроде и запрос, а не спрашивает - сам дает)
    - если данные такие уже в БД есть, то WHERE вернет ложь и select вернет ноль записей и нифига вставлено не будет.
     
     
  • Batler

    Сообщения: 142 Репутация: N Группа: Кто попало

    Spritz 27 августа 2009 г. 7:02, спустя 5 дней 18 часов 23 минуты

    ага, тоже самое что я сказал, но разбито на этапы. Я попытался собрать в одно логическое высказывание :)
    Значит мы друг друга поняли.
    По поводу модификации и ласт инсерт айди - думал. Надо пробовать. Пока нет времени, попал в больницу.
    Как выпишусь - отпишу.
  • adw0rd

    Сообщения: 22944 Репутация: N Группа: в ухо

    Spritz 27 августа 2009 г. 7:12, спустя 9 минут 50 секунд

    Batler, выздоравливай!
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • AndryG

    Сообщения: 237 Репутация: N Группа: Адекваты

    Spritz 27 августа 2009 г. 10:11, спустя 2 часа 59 минут 31 секунду

    У Вас эти этапы идут в коде клиента, Вы требуете от СУБД выполнения нескольких запросов, а я предлагаю всё в одном запросе.

    Выздоравливайте.
  • Batler

    Сообщения: 142 Репутация: N Группа: Кто попало

    Spritz 14 сентября 2009 г. 8:14, спустя 17 дней 22 часа 2 минуты

    Благодарю!
    Почти поправился. Еще месяц где-то заживать буду.
    По теме:
    испытал запросы, которые предлагает AndryG. У меня так и не получилось заставить его работать.
    Потому что без FROM юзать запрос нельзя, а если вставить имя таблицы с одним столбцом то любой селект вернет пустоту.
    Но даже не смотря на это мне удалось оценить производительность. Она снизилась (если учесть еще и тот факт, что часть запросов просто не выполнялось, потому как вставки не производились.). Я думаю это произошло из-за этого:
    Запросы к базе получались в цикле, а это уже плохо.
    Запрос с подзапросом

    Сразу скажу что без подготовленных выражений (т.е. не так как предлагал AndryG)
  • AndryG

    Сообщения: 237 Репутация: N Группа: Адекваты

    Spritz 14 сентября 2009 г. 8:31, спустя 17 минут 41 секунду

    Как можно оценить производительность, если запрос так и не заработал.
  • Batler

    Сообщения: 142 Репутация: N Группа: Кто попало

    Spritz 14 сентября 2009 г. 8:47, спустя 15 минут 55 секунд

    Он работал некорректно, но оценить производительность по нему все же можно было.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!