Сравнение выходных данных оператора объяснения на Amazon Redshift

Я написал очень сложный запрос в Amazon Redshift, который состоит из 3-4 временных таблиц вместе с подзапросами. Поскольку Query выполняется медленно, я попытался заменить его другим запросом, который использует производные таблицы вместо временных таблиц. Я просто хочу спросить, есть ли способ сравнить вывод "Объяснить" для обоих запросов, чтобы мы могли сделать вывод, какой запрос работает лучше с точки зрения производительности (оба space > и время).
Кроме того, насколько полезна замена временных таблиц производными таблицами в красном смещении?


person Rohit Anand    schedule 29.03.2018    source источник
comment
Чтобы сравнить объяснение, сделайте объяснение (анализ, стоимость, время, буферы, подробное описание, формат json), затем вы можете сравнить с помощью инструмента параллельного сравнения или выполнить мгновенное сравнение, используя pev tatiyants.com/postgres-query-plan-visualization   -  person Ben    schedule 29.03.2018
comment
что вы подразумеваете под производными таблицами и временными таблицами? пожалуйста, объясните эту часть полностью, и если можете - покажите свой sql.   -  person Jon Scott    schedule 29.03.2018
comment
@JonScott Мой запрос выглядит так: стерпеливым_набором как (выберите * из ......... 2-3 соединений......), metric_set как (выберите * из......... 2-3 соединения......), измерьте как (выберите * из ......... 2-3 соединений......) выберите x,y,z из соединения пациента_набора на .. ... join metric_set on........ join Measure on........ где............ ‹br› Теперь второй запрос строится таким образом что временные таблицы заменены производными таблицами.   -  person Rohit Anand    schedule 29.03.2018
comment
пожалуйста, обновите свой вопрос, чтобы включить свой запрос и объяснить, что вы подразумеваете под производными таблицами и временными таблицами?   -  person Jon Scott    schedule 29.03.2018
comment
@Бен Спасибо!!! Пев помогает. :)   -  person Rohit Anand    schedule 29.03.2018


Ответы (1)


Когда Redshift создаст свои собственные временные таблицы (видимые на плане), вы сможете настроить запрос, самостоятельно создав их как временные таблицы, указав сжатие и добавив ключи распределения и сортировки, которые помогают выполнять соединения в таблице.

Очень медленные запросы обычно используют стиль соединения nested loop. Самый быстрый тип соединения — merge join. Если возможно, перепишите запрос или измените таблицы, чтобы использовать merge join или хотя бы hash join. Подробности здесь: https://docs.aws.amazon.com/redshift/latest/dg/query-performance-improvement-opportunities.html

Ресурсы для лучшего понимания планирования и выполнения запросов Redshift:

person Joe Harris    schedule 09.04.2018