Подтвердить что ты не робот

План объяснения SQL: что такое материализация?

Я попросил PostgreSQL объяснить мой запрос. Часть объяснений была:

table_name --> Materialize

Что делать? Я присоединяюсь к двум таблицам, а не к представлениям или тому подобному.

4b9b3361

Ответ 1

Материализуется node означает, что вывод любого ниже его в дереве (который может быть сканированием или полным набором объединений или что-то в этом роде) помещается в память до того, как будет выполнен верхний node. Обычно это делается, когда внешнему node нужен источник, который он может повторно сканировать по той или иной причине.

Итак, в вашем случае планировщик определяет, что результат сканирования на одной из ваших таблиц поместится в память, и это позволит выбрать верхнюю операцию соединения, требующую rescans, хотя все еще дешевле.

Ответ 2

Это означает, что он не может использовать какой-либо индекс (или аналогичный метод), чтобы сделать объединение эффективным, так как последнее средство материализует результат из одной из таблиц, чтобы иметь меньший набор, с которым можно работать при объединении с другая таблица.

Ответ 3

Мы можем сказать, что команда Materialize создаст View of a table (точно так же, как виртуальная таблица ИЛИ a SnapShot таблицы в памяти)

Он используется для улучшения видимости данных, представляя его в более информационном контексте и контролируя доступ к данным, скрывая критические или конфиденциальные данные от пользователей, которым не нужно их видеть/или кому мы не занимаемся, t, что бы показать это.

Основное преимущество использования Materialize/Snap-Shot заключается в том, чтобы впоследствии снизить стоимость запроса в этой таблице. В плане выполнения то же самое говорится о том, какую выгоду мы можем получить, если мы используем материализацию по сравнению с тем, когда она не используется!

Объясните, чтобы проверить план выполнения

->  Materialize  (cost=0.29..8.51 rows=10 width=244)
         ->  Index Scan using tenk2_unique2 on tenk2 t2  (cost=0.29..8.46 rows=10 width=244)
               Index Cond: (unique2 < 10)

Я проигнорировал этот -->, поскольку я не знаю такого оператора, плюс - прокомментирует выражение впоследствии, я предположил, что вы имели в виду только этот ->.

Я надеюсь, что это поможет.