在PostgreSQL中,对于一个分区表,当执行一个查询时,PostgreSQL的查询优化器会生成一个generic plan,这是一个通用的计划,它表示如何在所有分区上执行查询,而不考虑具体的分区方案。然后,在执行期间,PostgreSQL会生成一个custom plan,这是针对特定分区方案的计划。
以下是一个简化的例子,展示了如何在PostgreSQL中生成和使用generic和custom plans:
-- 假设存在一个分区表part_tab,它根据列part_key进行范围分区
-- 生成generic plan
SELECT * FROM part_tab WHERE part_key > 100;
-- 执行查询时,PostgreSQL会生成custom plan,针对具体的分区范围执行查询
在这个例子中,查询优化器生成了一个generic plan,它表示对于所有满足part_key > 100
条件的分区进行查询。在查询执行期间,PostgreSQL会为每个实际的分区生成一个custom plan,并执行这些计划。这个过程是透明的,对于用户而言,只需要提供正确的查询条件即可。