Ограничение на размер SQL запроса

Shasoft

Новичок
Ограничение на размер SQL запроса

Есть желание сделать в программе запрос вида
PHP:
UPDATE mytable SET A=1 WHERE ID IN (1,4,2,7,3,6,...)
Но количество идентификаторов в условии IN ТЕОРЕТИЧЕСКИ может быть бесконечно.
Практически 10 тыс наверное, не больше.

Нет ли каких ограничений на размер запроса?
 

DiMA

php.spb.ru
Команда форума
max_allowed_packet ограничивает размер запроса
 

Shasoft

Новичок
DiMA
Т.е. ограничение всё-таки есть.

zerkms
А это имеет какое-то значение для размера запроса? Т.е. если idшники берутся не из "правильного" места, то максимальный размер запроса один, а если из правильно, то другой? :)

-~{}~ 12.02.09 09:50:

DiMA
Судя по поискам в google max_allowed_packet = 1 Мб
Спасибо за ответ.
 

DiMA

php.spb.ru
Команда форума
бедняга, аж в гугле искал .-)
смотреть текущее значение - в phpMyAdmin
установить иное значение - my.ini
 

Shasoft

Новичок
Мне нужно не текущее значение, а то, которое по умолчанию.
Нашел 3 сообщения, везде упоминания про 1 Мб.

P.S. гугля всегда помогает, только нужно знать "что" искать. Поэтому и спрашивал, чтобы навели на нужное слово.
 

zerkms

TDD infected
Команда форума
Shasoft
если ты id'шники берёшь из другой выборки - то вполне резонно было бы тогда тебе посоветовать INNER JOIN.
 

Фанат

oncle terrible
Команда форума
если idшники берутся из правильного места, то буфер не нужен. очень сложно сообразить, да?
 

Shasoft

Новичок
***** и zerkms
Пока данная кострукция рассматривается для использования в двух случаях
1. В данном случае ID берутся из других запросОВ.
Есть древовидная структура
ID, IDPARENT.
При изменении родителя нужно найти ВСЕХ детей, детей детей и так далее и собрать все их ID. Так что inner join не катит.

2. Список ID приходит в POST запросе. inner join тоже не катит.
 

Фанат

oncle terrible
Команда форума
древовидная структура тоже может быть неправильной. особенно если в ней 10 тыщ нод.
в общем, типичная ламерская позиция, "я хочу делать через задницу, и могу привести сто аргументов, почему не буду делать по-человечески". я бы такие темы сразу прибивал.
 

DiMA

php.spb.ru
Команда форума
ты зачем втираешь про значение по-умолчанию? Если оно не задано в конфиге или строке запуска, то show variables покажет все дефолтные настройки.
 

Shasoft

Новичок
Прочитайте ВНИМАТЕЛЬНО вопрос.
Там нет НИЧЕГО про СПОСОБЫ ХРАНЕНИЯ ДЕРЕВА.

*****, вы много пишите на форуме НЕ ПО ТЕМЕ ВОПРОСА. Хоть иногда читайте вопрос и отвечайте на него, если знаете ответ, а не переводите его в теоретический спор не тему "правильного" построения программы. А если есть желание пообсуждать правильность хранения дерева именно для МОЕЙ конкретной задачи, то создавайте отдельную тему.
 

zerkms

TDD infected
Команда форума
*****, вы много пишите на форуме НЕ ПО ТЕМЕ ВОПРОСА. Хоть иногда читайте вопрос и отвечайте на него, если знаете ответ, а не переводите его в теоретический спор не тему "правильного" построения программы.
на этом форуме принято обучать людей делать правильно. если ты задал вопрос - то будь готов также ответить на встречные вопросы.

если что-то не нравится - всегда есть куча других форумов.
 

Shasoft

Новичок
zerkms
Я понимаю насчет обучения и на встречные вопросы я ответил.
Но товарищ ***** сразу завел разговор о правильности хранения деревьев, что
1) в данном случае никакого отношения к изначальному вопросу не имеет.
2) он не может знать насколько у меня правильная структура, так как не знает моей задачи
а из этого можно сделать вывод, что он просто "понты" свои показывает.
 

Фанат

oncle terrible
Команда форума
именно то, о чем я говорил.
"задавая вопросы, я показываю, что знаю мало. реагирую же на ответы я так, как будто 20 лет учебники писал"
особенно забавно это все выглядит учитывая, что вопрос - 5 сек в гугле

-~{}~ 12.02.09 12:36:

он не может знать насколько у меня правильная структура
ну ё-моё.
список смежности на 10 тыщ нод.
сидит такой мальчик в песочнице, в носу ковыряет, и думает плохо о дяде-строителе: "он ведь не знает, сколько этажей в моем подземном городе!"
 

Shasoft

Новичок
Дядя-строитель построил 10 подземных городов и, вполне возможно, что это у него вышло очень хорошо.
Теперь, когда разговор заходит о стройке, он сразу начинает учить, как строить подземные гаражи, так как ума у него не хватает понять, что строить можно не только подземные гаражи, но и надземные, а также небоскребы да и много ещё чего разного, а это существенно отличается от строительства подземного гаража.
При этом, когда с ним не соглашаются и указывают на то, что его "учение" не подходит для данного вида строительства, этот "дядя" сразу начинает говорить про то, что вот, дескать, очередной ламер, и он никогда хороший подземный гараж не построит.

P.S. На нормальные ответы от DiMA я реагирую нормально. Человек ответил, я поблагодарил. zerkms написал, что он имел ввиду "INNER JOIN", я ему описал, почему тут это не пройдет.

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

zerkms

TDD infected
Команда форума
Shasoft
зря ты так... передача в IN тонны идентификаторов должно быть для тебя сигнальчиком атеншн.
любая выборка на дереве, в идеале, должна выполняться в 1-2 простых запроса.
 

Shasoft

Новичок
Потому и спрашиваю. С точки зрения простоты кода такой вариант я выбрал как наиболее подходящий, поэтому решил узнать, как такой запрос выглядит с точки зрения знатоков.
Но, судя по всему знатокам не понравилось. :)
Да и это ограничение по размеру запроса тоже налагает ограничения. Хотя врядли я достигну размера даже в 1 Мб, но всё-таки лучше сразу сделать так, чтобы потом в дальнейшем проблем таких не возникло.

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