Я попросил PostgreSQL объяснить мой запрос. Часть объяснений была:
table_name --> Materialize
Что делать? Я присоединяюсь к двум таблицам, а не к представлениям или тому подобному.
Я попросил PostgreSQL объяснить мой запрос. Часть объяснений была:
table_name --> Materialize
Что делать? Я присоединяюсь к двум таблицам, а не к представлениям или тому подобному.
Материализуется node означает, что вывод любого ниже его в дереве (который может быть сканированием или полным набором объединений или что-то в этом роде) помещается в память до того, как будет выполнен верхний node. Обычно это делается, когда внешнему node нужен источник, который он может повторно сканировать по той или иной причине.
Итак, в вашем случае планировщик определяет, что результат сканирования на одной из ваших таблиц поместится в память, и это позволит выбрать верхнюю операцию соединения, требующую rescans, хотя все еще дешевле.
Это означает, что он не может использовать какой-либо индекс (или аналогичный метод), чтобы сделать объединение эффективным, так как последнее средство материализует результат из одной из таблиц, чтобы иметь меньший набор, с которым можно работать при объединении с другая таблица.
Мы можем сказать, что команда 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)
Я проигнорировал этот -->
, поскольку я не знаю такого оператора, плюс - прокомментирует выражение впоследствии, я предположил, что вы имели в виду только этот ->
.
Я надеюсь, что это поможет.