Вызывает ли string_agg () из Postgres низкую производительность?Если это так, как я могу улучшить это? - PullRequest
0 голосов
/ 05 декабря 2018

Я создал представление, которое собирает имена в отдельном столбце из его таблиц сопоставления.

Когда я присоединяюсь к своей основной таблице, запрос занимает больше времени.Я надеюсь, что это происходит из-за string_agg (), которая содержит DISTINCT.

Правильно ли мое предположение?Если это может привести к низкой производительности, есть ли способ исправить это.

Пример кода:

    CREATE OR REPLACE VIEW .training_catalog_mapped_data
    AS SELECT t.catalog_id,
        string_agg(DISTINCT a.audiences_name::text, ','::text ORDER BY (a.audiences_name::text)) AS audiences,
        string_agg(DISTINCT k.keywords_name::text, ','::text ORDER BY (k.keywords_name::text)) AS keywords,
        string_agg(DISTINCT l.location_name::text, ','::text ORDER BY (l.location_name::text)) AS locations,
        string_agg(DISTINCT pub.publish_to_name::text, ','::text ORDER BY (pub.publish_to_name::text)) AS publish_to,
        string_agg(DISTINCT top.topic_name::text, ','::text ORDER BY (top.topic_name::text)) AS topics
       FROM lat_oct_29.training_catalog t
         LEFT JOIN mapping_audiences_view a ON t.catalog_id = a.catalog_id //--> This is a view
         LEFT JOIN mapping_keywords_view k ON t.catalog_id = k.catalog_id   //--> This is a view
         LEFT JOIN mapping_location_view l ON t.catalog_id = l.catalog_id //--> This is a view
         LEFT JOIN mapping_publish_to_view pub ON t.catalog_id = pub.catalog_id  //--> This is a view
         LEFT JOIN mapping_topic_view top ON t.catalog_id = top.catalog_id  //--> This is a view
      GROUP BY t.catalog_id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...