簡體   English   中英

postgresql 查詢性能慢

[英]Slow query performance postgresql

我有一個由兩個表組成的數據庫:corr1、corr1_2。 這兩個表各有兩列:c1 和 c2,每列包含 10 萬行數據。 數據是從正態分布中提取的整數。 數據高度相關:

  • 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)

有沒有人知道我如何提高性能,或者這對我的電腦要求太高了嗎?

你沒有寫連接條件,所以你得到了一個交叉連接。

你沒有說平均值和標准差是什么,但似乎這兩個條件都不是很有選擇性。 所以你最終得到了幾乎 100000 乘以 100000 個結果行。

所以查詢很慢也就不足為奇了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM