Postgresql

PostgreSQL 可以管理 15 億行的表嗎?

  • November 22, 2019

該表包含三列:

  • id
  • string(最多 400 個字元)
  • length其中記錄了長度string

問題是,當我進行查詢時,例如

select * from table where length = <whatever number>;

PostgreSQL 從不返回,它一直在計算。

我想知道這是不是因為數據集很大?

我應該以某種方式將桌子分成幾份嗎?

環境:12GB RAM,Win10 上的 PostgreSQL 12。

你必須有更多的耐心,掃描一張大桌子需要一段時間。

經典的補救措施是創建一個索引:

CREATE INDEX ON "table" (length);

這本身將花費很長時間(並且可能會使用相當大的磁碟空間),但是一旦有了該索引,它將加快您的查詢速度(除非它返回的行數太多以至於索引掃描並不比順序表掃描更有效) .

另一種方法可能是根據長度對錶進行分區。這將要求長度幾乎不會改變。然後每次搜尋特定字元串長度將僅掃描適當的分區並儘可能快。嘗試獲得快速磁碟。

引用自:https://dba.stackexchange.com/questions/253907