Всякий раз, когда я использую небольшое утверждение, например:
DELETE FROM c_ordertax WHERE (c_order_id,c_tax_id) IN ((183691598,1000862),(183691198,1000862));
Он выполняется отлично ... но если я выполню длинную инструкцию, чтобы удалить, скажем, 18755 записей с этими скалярными значениями, он говорит, что "max_stack_depth" превышен ... эта опция в postgresql.conf была установлена в 2 МБ и запрос, который выкинул ошибку даже не до 2Мб, ее всего 300кб
Примечание: триггеры не прикреплены к таблице
И еще одна вещь, которую я заметил в отношении других запросов, это то, что когда я использую одно значение в предложении IN, например: DELETE FROM c_ordertax WHERE (c_order_id) IN ((183691598),(183691198));
у них нет проблем, и, как бы долго ни занимался запрос, он выполняется отлично ...
Мои текущие параметры:
- Я мог бы увеличить значение "max_stack_depth", но оно ограничено
8 МБ и его увеличение вызывает проблемы и сервер postgresql
не может перезапустить ... он может только перезапустить правильно, если опция
установить значение менее 8 МБ
- Я мог бы разделить эти заявления, но это может быть не изящно
решение, и это тоже требует от меня знать максимальные скалярные значения
которые могут быть размещены в одном выражении, и если количество полей
увеличение скалярного значения, общее количество значений, которые могут быть
боязнь, используемая в одном выражении, может уменьшить, боюсь ...
Итак, мой вопрос: каково максимальное количество скалярных значений, которое может быть использовано в предложении IN ... если число полей в скалярном значении увеличивается, есть ли формула, которая может использоваться для определения максимального числа скалярные значения, которые можно использовать, например:
5 values with 2 fields => ((1,2),(1,2),(1,2),(1,2),(1,2))
2 values with 3 fields => ((1,2,3),(1,2,3))
Кто-нибудь из Database Mastermind сталкивался с подобными проблемами? Если да, то как мне справиться с этим?