我们正在用尽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参数。
请您就上述问题提供意见并提出建议。