【问题标题】:Split Postgres query into readable snipptes将 Postgres 查询拆分为可读的片段
【发布时间】:2016-04-28 14:41:43
【问题描述】:

我有一个相对的、不复杂但很长的查询字符串,例如:

SELECT array_to_json(array_agg(row_to_json(exp)))
    FROM (
      SELECT label as name, (
    SELECT array_to_json(array_agg(row_to_json(opt)))
        FROM (
            SELECT value as name, count as size FROM countoptions 
      ) opt
    ) as children
    FROM countoptions GROUP BY label 
    ) exp;

稍后此查询将变得更加复杂,因此我正在寻找一种技术将查询拆分为更易读的部分。

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    Common Table Expressions 是您要找的吗?

    WITH 提供了一种编写辅助语句的方法,以用于更大的 询问。这些语句,通常被称为 Common Table 表达式或 CTE,可以被认为是定义临时表 仅针对一个查询而存在。 WITH 中的每个辅助语句 子句可以是 SELECT、INSERT、UPDATE 或 DELETE;和 WITH 子句 本身附加到一个也可以是 SELECT 的主语句, 插入、更新或删除

    【讨论】:

    • 如果您查询大型数据集,请不要忘记 CTE 会消耗临时空间。它们的可读性很好,但内部没有得到很好的优化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-21
    • 2013-10-14
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多