hell0w0rd
@hell0w0rd
Просто разработчик

Что лучше: очередь запросов или один, но большой?

Запрос/ы формируется в цикле, разбирая ассоциативный массив, что лучше — сформировать один запрос, или для каждой новой строки выполнить свой?
  • Вопрос задан
  • 10108 просмотров
Решения вопроса 1
@Hint
О каких запросах идет речь? Разделение через точку с запятой?
Могу сказать точно, что многострочный INSERT (один INSERT с несколькими строками) работает значительно быстрее нескольких отдельных INSERT'ов.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 5
rakot
@rakot
В большинстве случаев этот вопрос — экономия на спичках.
В данном случае большой запрос будет простым и выполнится легко, значит будет быстро.
Много мелких запросов, скорее всего вообще не дойдут до базы, а результат будет взят из кеша, а значит тоже будет выполнен быстро.

Делайте так, как вам удобно, а желание оптимизировать приберегите для мест, где это действительно нужно.
Ответ написан
Комментировать
vsespb
@vsespb
Либо совсем неважно, либо оптимально что-то среднее — по одному запросу на каждые 100-1000 иттераций.
Ответ написан
Комментировать
@edogs
Один запрос.
Это самый распространенный (и к счастью самый легко устраняемый косяк), когда делают нечто вроде foreach() mysql_query; что при всего-то даже при 100 элементах массива дает результатом 100 запросов. Жуть страх и трепет.
Ответ написан
vsespb
@vsespb
в транзакции быстрее — на то она и транзакция.

вместо 100 update, кстати, иногда можно извратиться и обойтись одним мультистрочным insert… on duplicate key update
Ответ написан
@run182
Смотря насколько сложный 1 запрос. Иногда лучше >100 мелких запросов чем 1 реально сложный.
Но часто есть 3 вариант - 2 или 3 небольших запроса с последующей обработкой полученных массивов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы