За последние 24 часа нас посетили 17842 программиста и 1654 робота. Сейчас ищут 1677 программистов ...

Обновление множества строк за "раз"

Тема в разделе "MySQL", создана пользователем antonn, 22 янв 2008.

  1. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    есть табличка, в ней поле VARCHAR(32) и еще по мелочи :) записей в табличке около 1,5К.
    это спец поле нужно заполнить на основании массива, в котором каждой записи есть свой элемент массива, т.е. по сути - заново одним махом обновить поле во всех записях выбрав их из массива. Обновляемый текст разный (в смысле внутренним циклом мускла не построить).
    Можно банально попробывать в цикле делать запрос update для каждой записи, но интересует, а есть ли более умный метод? что нибудь "пакетное", чтобы поменьше запросов...
     
  2. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    insert во временную таблицу values (),(),(),...и update a,tmp set a.x=tmp.x
    но что будет быстрее - тестируй.
     
  3. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    я про то, что нет ли ограничения кол-ва запросов к мусклу за один заход?
     
  4. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    мда. Вроде НГ уже прошел. Что пьем?
    Что такое "заход" и что такое "запрос"?

    зы самого устраивает своя способность формулировать?
     
  5. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    за один вызов скрипта.
     
  6. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    совсем плохо.
    Давай сначала, подлежащее, сказуемое, ...
    Что такое скрипт, что такое запрос и твой вопрос - полностью и внятно.
    А то будет пора посылать сюда
     
  7. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    так и будещ буквоедствовать?
    набираешь в бравзере (смотри внимательно - написано неправильно!) localhost/test.php, идет вызов скрипта test.php, в нем в цикле прохожу по массиву, каждый элемент которого нужно занести в соответствующую запись таблицы (причем порядок сделования в массиве и в базе разный). Отсюда вопрос, есть ли у мускла ограничение на кол-ва запросов на один запрос скрипта? потому что это сейчас у меня 1,5К записей, а может быть больше.

    "на танке" мимо тазика, мы про sql говорим, а не то, что серверный язык выполняется на сервере...
     
  8. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    мускул не знает, ты вызываешь из скрипта или откуда еще.
    а sql выполняется в мускуле, а не в пхп, и что там запущено в скрипте его не интересует и не может интересовать.
    пока мускул запущен - он ожидает запросов.
    Так что такое "запрос скрипта"? моя русская языка твоя не понимайт.
    Порядок в базе тебе неизвестен в принципе, он касается только мускула. В каком порядке он тебе будет выдавать - ты указываешь в запросе.

    Вот ограничение на время выполнения скрипта пхп обычно стоит, поэтому стоит оптимизировать свой скрипт по скорости чтобы успел отработать, в том числе по суммарному времени выполнения запросов к мускулу, ибо пых его ждет.