172 похожих чатов

Нормальный запрос. На что жалуетесь?

13 ответов

24 просмотра

не жалуется, тормозит с выполнением

а вообще это нормальная практика использования служебных полей в запросе? ну и формы ANY(ARRAY()) вместо in?

Ale><ander
а вообще это нормальная практика использования слу...

Вообще-то нет, не нормальная. Как и сборки их в массив из запроса, в большинстве случаев. А ANY(ARRAY()) для константного списка (передаваемого как параметр с клиента, например) — норма. Т.е. смотря в какой ситуации. Тут, похоже, кто-то что-то оптимизировал (пытался устранить deadlocks, возможно).

Yaroslav Schekin
Вообще-то нет, не нормальная. Как и сборки их в ма...

Как-то непойму -- а зачем тут ANY(ARRAY()) нужэн? Ну, будет сначала оно в указанном порядке FOR UPDATE, а потом только UPDATE, или в указанном порядке будет идти на каждую строку попарно FOR UPDATE, UPDATE -- какая разница? Блокировка вроде одна и та жэ в итоге.

Ilya Anfimov
Как-то непойму -- а зачем тут ANY(ARRAY()) нужэн? ...

Видимо, там есть какие-то другие UPDATE, с которыми это и "синхронизируется" таким образом. В сторону: почему в своих рассуждениях о блокировках и корректности многие часто рассматривают только взаимодействие разрабатываемого UPDATE (или транзакции) только с другой такой же? Других запросов к этой таблице не существует, что ли ("таблица одного запроса")? ;) > Блокировка вроде одна и та жэ в итоге. Последовательность блокировок может быть разная — ORDER BY-то прямо в UPDATE не напишешь.

Yaroslav Schekin
Видимо, там есть какие-то другие UPDATE, с которым...

Да какбы -- другие/не другие... По-моему, оно будет иметь одинаковую последовательность блокировок, определяемую ORDER BY в IN (SELECT ... ORDER BY FOR UPDATE) и ANY(ARRAY(SELECT ... ORDER BY FOR UPDATE).

Ilya Anfimov
Да какбы -- другие/не другие... По-моему, оно буде...

А, в этом смысле. Ну да, с ctid-ами отличие только в том, что это (возможно) быстрее.

Yaroslav Schekin
А, в этом смысле. Ну да, с ctid-ами отличие только...

Не-не, я вообще сейчас не про ctid. ctid -- это отдельно Я про ctid IN (SELECT ...) vs ctid = ANY(ARRAY(SELECT ...)) Тут ужэ упоминали, что это странная конструкцыя. Она в общем в большынстве случае заметно замедлит всё это развлечение (часто промежуточный результат можно просто не хранить). Я думал -- можэт вы обратили внимание, и имеете в виду, что этот кунштюк можэт как-то повлиять на блокировки и deadlock avoidance.

Ilya Anfimov
Не-не, я вообще сейчас не про ctid. ctid -- это от...

Да нет, хотя планы так получаются формально разные, эффективность у них примерно одинакова, если rows мало. Если много — замедлит, по идее (я как-то не пользовался).

Yaroslav Schekin
Да нет, хотя планы так получаются формально разные...

Ну, тут примерно 700 тысяч, надо думать. Кроме того, так он, возможно, сможэт это в один проход по буферам t1 отработать.

Ilya Anfimov
Ну, тут примерно 700 тысяч, надо думать. Кроме тог...

Вообще неизвестно, сколько там в t2 на самом деле, то-то и оно.

Yaroslav Schekin
Вообще неизвестно, сколько там в t2 на самом деле,...

Эстиматор говорит, что 685546. Для временных таблиц он вроде нормально эту статистику online обновляет.

Ilya Anfimov
Эстиматор говорит, что 685546. Для временных табли...

Как раз нет, для temporary tables "сама по себе" статистика не обновляется никогда, и рассчитывается очень криво, особенно в нетривиальных случаях.

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

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта