Вечер добрый, задался вопросом, мнение хочется услышать. Допустим, нужно выполнить 50 запросов к базе данных, можно 50 раз в цикле вызвать функцию mysql_query (), а можно накопить все запросы в строковую переменную и выполнить их все потом, вызвав функцию mysql_query () лишь раз. Я считаю, что второй вариант должен быть быстрее, я прав?
Mr. T если тебе срать на результат - ты можешь хоть за 10 лет запросов скопить и шарахнуть разом. размер запроса указан в конфиге, можешь выставить сколько пожелаешь. но там подефолту вроде как не меньше мегабайта. тыщи три строк ухнуть можно. ты всталять собираешься или апдейтить?
igordata, апдейтить, сейчас около 180 запросов, но реально может быть и больше. Наверное, стоит сделать эксперимент, а также замеры времени.
эй, стариканы! =) какой там механизм, когда сначала ты говоришь, что ты будешь делать, а потом массированно хреначишь одни только значения?
пофъ. [sql]update your_table set field3 = case when (field1,field2) = (1,2) then 3 when (field1,field2) = (2,3) then 4 ... else null end where (field1,field2) in ((1,2),(2,3),...,(30,31))[/sql]
iliavlad, ну, допустим, есть 100 категорий и рядом с каждой есть текстовое поле input, в котором руками вводится его позиция в выводе, нужно эту позицию записать в базу данных. Если таких категорий 100, то соответственно 100 запросов у меня выходит сейчас. titch, жуть какая-то, если можно линк на какую-нибудь статью, что подробнее узнать о предложенном методе решения - буду очень благодарен.
Mr. T, поднималась уже такая тема полгода назад я частично процитировал последний пост. сам не использовал такую конструкцию в работе (потому что не было такой большой нагрузки на update), но вообще я эту конструкцию встречал в чужом коде пару раз. она хорошо генерируется на лету
т.е. у тебя сейчас примерно такой запрос update cat_pos_table set pos = 5 where cat_id = 2 ? и получается 100 запросов? можно сделать двумя запросами delete from cat_pos_table where cat_id in (1,2,5,10) insert into cat_pos_table (cat_id, pos) values (1,5), (2,3), (10, 1) но это лишь в теории, когда у тебя отдельная таблица cat_pos_table.
iliavlad, способ интересный, спасибо. Я, наверное, сделаю эксперимент с замерами времени и потом выложу результат сюда для общего обозрения