查询计划器为相同的查询选择不同的计划

时间:2019-06-14 19:29:32

标签: amazon-rds postgresql-9.6

我们正在用尽Amazon RDS中的生产Postgresql数据库。两天以来,我们发现数据库性能显着下降。经过初步调查,我们发现查询计划者针对相同的查询采取了不同的计划。

从table1中选择a_id,b_id,created_date,在'2019-04-14T16:40:11.165 + 0000'和'2019-05-13T16:40:11.165 + 0000'之间创建日期,并且c_id = 49639;

查询计划

在table1上使用table1_c_id_created_date_idx进行索引扫描(成本= 0.57..790.59行= 197宽度= 24)    索引条件:((c_id = 49639)AND(created_date> ='2019-04-14 09:40:11.165-07':: timestamp with time zone)AND(created_date <='2019-05-13 09:40: 11.165-07':: timestamp with time zone)) (2行)

但是具有不同日期范围的同一查询具有不同的查询计划

从table1中选择a_id,b_id,created_date,在'2019-05-14T16:40:11.165 + 0000'和'2019-06-13T16:40:11.165 + 0000'之间创建日期,并且c_id = 49639;

查询计划

在table1上使用table1_created_date_idx进行索引扫描(成本= 0.57..8.59行= 1宽度= 24)    索引条件:((created_date> ='2019-05-14 09:40:11.165-07'::带时区的时间戳)AND(created_date <='2019-06-13 09:40:11.165-07'::带时区的时间戳))    过滤器:(c_id = 49639) (3行)

对于两个日期范围,记录数均相同。

我们在数据库上设置了auto_vacuum和default_statistics_target参数。

请您就上述问题提供意见并提出建议。

0 个答案:

没有答案