Postgresql 将Postgres查询拆分为可读的片段
我有一个相对的、不复杂但很长的查询字符串,如:Postgresql 将Postgres查询拆分为可读的片段,postgresql,Postgresql,我有一个相对的、不复杂但很长的查询字符串,如: 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
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;
稍后,这个查询将变得更加复杂,因此我正在寻找一种将查询拆分为更可读部分的技术 你在找什么
WITH提供了一种编写辅助语句的方法,以便在更大的应用程序中使用
查询这些语句通常被称为公共表
表达式或CTE可被视为定义临时表
只存在一个查询。一个带有
子句可以是SELECT、INSERT、UPDATE或DELETE;以及WITH子句
它本身附加到主语句,主语句也可以是SELECT,
插入、更新或删除
你在找什么
WITH提供了一种编写辅助语句的方法,以便在更大的应用程序中使用
查询这些语句通常被称为公共表
表达式或CTE可被视为定义临时表
只存在一个查询。一个带有
子句可以是SELECT、INSERT、UPDATE或DELETE;以及WITH子句
它本身附加到主语句,主语句也可以是SELECT,
插入、更新或删除
但不要忘记,如果查询大型数据集,CTE需要临时空间。它们的可读性很好,但内部优化得不好。但不要忘记,如果查询大型数据集,CTE会占用临时空间。它们的可读性很好,但内部优化不好。