Одна ВСТАВКА с СОЮЗАМИ или несколькими ВСТАВКАМИ?

У меня есть функция sql, которая возвращает таблицу. Таблица заполняется 6 или около того достаточно сложными утверждениями.

Лучше ли объединять эти утверждения, чтобы была только одна вставка, или лучше хранить их отдельно?

Или это не имеет никакого значения?

10
задан OMG Ponies 31 August 2010 в 21:50
поделиться

1 ответ

На самом деле, это имеет значение.

Когда у вас есть отдельные INSERT, вы должны позаботиться о том, чтобы сделать это внутри транзакции, чтобы у вас всегда было согласованное состояние. Но, поскольку они разделены, объем памяти, необходимый серверу для завершения, меньше, потому что каждый INSERT имеет свой собственный набор результатов — когда запрос завершается, сервер может выполнить другой запрос и т. д..

Когда у вас есть все внутри одного большого запроса, объединенного UNION ALL, серверу потребуется больше временных таблиц и больше памяти для завершения. Но таким образом у вас есть что-то вроде «массовой» вставки, что может привести к более быстрой вставке.

Лично я бы использовал отдельные вставки внутри транзакции. Иногда просто сделать что-то более простое намного выгоднее с точки зрения ремонтопригодности и отладки, чем незначительное повышение производительности (если оно есть, зависит от количества фактически вставляемых строк)

4
ответ дан 3 December 2019 в 18:30
поделиться
Другие вопросы по тегам:

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