Postgresql
PostgreSQL 可以管理 15 億行的表嗎?
該表包含三列:
id
string
(最多 400 個字元)length
其中記錄了長度string
問題是,當我進行查詢時,例如
select * from table where length = <whatever number>;
PostgreSQL 從不返回,它一直在計算。
我想知道這是不是因為數據集很大?
我應該以某種方式將桌子分成幾份嗎?
環境:12GB RAM,Win10 上的 PostgreSQL 12。
你必須有更多的耐心,掃描一張大桌子需要一段時間。
經典的補救措施是創建一個索引:
CREATE INDEX ON "table" (length);
這本身將花費很長時間(並且可能會使用相當大的磁碟空間),但是一旦有了該索引,它將加快您的查詢速度(除非它返回的行數太多以至於索引掃描並不比順序表掃描更有效) .
另一種方法可能是根據長度對錶進行分區。這將要求長度幾乎不會改變。然後每次搜尋特定字元串長度將僅掃描適當的分區並儘可能快。嘗試獲得快速磁碟。