【发布时间】:2020-09-10 07:28:57
【问题描述】:
我有一个由两个表组成的数据库:corr1、corr1_2。这两个表各有两列:c1 和 c2,每列包含 100k 行数据。数据是从正态分布中提取的整数。数据高度相关:
- corr1.c1 的最小值为 353,最大值为 651 和 271 个唯一值
- corr1.c2 的最小值为 540,最大值为 852 和 266 个唯一值
- corr1_2.c1 的最小值为 452,最大值为 750 和 273 个唯一值
- corr1_2.c2 的最小值为 562,最大值为 849 和 265 个唯一值
问题在于,对于要求苛刻的查询,查询性能极其缓慢。以下查询非常慢:
SELECT COUNT(*) FROM corr1, corr1_2 WHERE corr1.c1 > 500 AND corr1_2.c2 > 570;
我根据以下内容为表创建了索引:
CREATE INDEX corr1_c1_idx ON public.corr1 USING btree (c1)
CREATE INDEX corr1_c2_idx ON public.corr1 USING btree (c2)
CREATE INDEX corr1_2_c1_idx ON public.corr1_2 USING btree (c1)
CREATE INDEX corr1_2_c2_idx ON public.corr1_2 USING btree (c2)
有没有人知道如何提高性能,或者这对我的计算机要求太高了?
【问题讨论】:
标签: sql postgresql query-performance