1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.

Помогите составить сложный SQL-запрос

Тема в разделе "Программирование", создана пользователем Mikola, 02.09.11.

  1. Mikola

    Mikola Активный участник

    503
    0
    Помогите составить сложный SQL-запрос для MySQL.

    Есть таблица table с полями x и a (x - содержит уникальные значения).
    И есть заранее известные параметры y, b и c

    Необходимо найти в таблице запись где x=y.

    Если такой записи не найдено, то необходимо добавить новую запись, где: x=y и a=b+c.

    Если запись найдена, то необходимо проверить условие: a>b.

    Если условие истинно, то не надо ничего делать.

    Если условие ложно, то необходимо обновить найденную запись: a=b+с.


    Это все нужно сделать ОДНИМ SQL-запросом, без использования команд языка программирования.
     
  2. Кocтя

    Кocтя Читатель

    695
    231
    а SP нельзя?
    так и код будет читабельнее.

    ---------- Сообщение добавлено 02.09.2011 01:20 ----------

    например так:
     
  3. Mikola

    Mikola Активный участник

    503
    0
    Кocтя, так уже все и сделано... а вот надо переделать.

    Вообще, как вы считаете, реально ли мы выиграем в производительности приложения, если засунем это все в один запрос, учитвыая что к приложению идет примерно 500 запросов в секунду и при размере нашей таблицы примерно 1 млн. записей?

    ---------- Сообщение добавлено 02.09.2011 09:05 ----------

    Кocтя, я извиняюсь, не разобрал сначала... подумал что твой код на неком языке программирования.

    Я так понимаю, что SP - это хранимая процедура? Я с ними не имел дела вообще, хотя и слышал одним ухом.

    Сейчас у меня же все реализовано на командах языка программирования.

    Вопрос тогда такой - как отразится на производительности подход с хранимой процедурой?

    Мне нужно добиться максимальной производительности.
     
  4. Кocтя

    Кocтя Читатель

    695
    231
    Mikola, я не знаю о преимуществах хранимых процедур в MySQL, но в MS SQL , например, они значительно увеличивают производительность за счет нескольких факторов.
    http://msdn.microsoft.com/en-us/library/aa214299(v=sql.80).aspx
    Вы можете ознакомится с преимуществами SP в MySQL, но в любом случае, SP увеличит производительность.
     
  5. Mikle

    Mikle Активный участник

    1.321
    0
    Смотрите в сторону команды:
    Insert Into T(x,y)
    On DUBLICATE KEY UPDATE ...

    только прийдеться вам вводить ключевое поле на таблицу явно.