我們在Postgres數據庫中有一張表,其中列出了兩個整數,例如i1,i2和一個double,例如d。獲取Postgres表中的所有行
由於某些原因,我們需要此表中所有行中的這些字段的所有值。另外,我們需要使用Java來做到這一點,不要問我爲什麼。
我正試圖看到這樣做的最有效的方式。當然,我可以用查詢執行Java語句
SELECT i1, i2, d FROM mytable;
然後遍歷ResultSet。我擔心這可能會給DB帶來負擔。
該表可能包含數百萬行(絕對小於10米),我們只對這三個領域感興趣。
如果有一個單列主鍵,我可以很容易地編寫一個光標指示的呼叫,像這樣
SELECT i1, i2, d FROM mytable where primarykey > ?;
但表沒有單列主鍵。
雖然i1和i2保證是唯一的,但表格沒有索引,並且考慮到這只是一次性活動,所以團隊中的任何人都不可能有興趣創建一個。
如果沒有索引,我懷疑選擇所有的行實際上會比通過i1和i2訂購便宜,然後使用這些來編寫一個光標調用。
這樣做的最有效和最不成問題的方法是什麼?
你有節目的select語句是做到這一點的唯一方法。但是,您可能希望將驅動程序配置爲使用遊標獲取結果:https://jdbc.postgresql.org/documentation/head/query.html#query-with-cursor –
您可以通過創建索引來「準備」數據在這3個字段 - 這種方式選擇將只掃描索引,但它只會使你常常只掃描那3列,額外的索引是可以承受的。 –
嗨,沒有單列主鍵,而i1和i2保證是獨特,沒有指標。用這個描述更新了文章。很抱歉,在寫原創描述時忘記了。 – D159