2 回答

TA貢獻(xiàn)1825條經(jīng)驗 獲得超4個贊
您可以嘗試的各種策略:
使用您的 Java 程序在服務(wù)器 A 上創(chuàng)建一個臨時表,然后從服務(wù)器 B 復(fù)制您需要的數(shù)據(jù)(在服務(wù)器 B 上使用 SELECT,在服務(wù)器 A 上使用 INSERT)。然后在服務(wù)器 A 上執(zhí)行適當(dāng)?shù)牟樵儯詫⒃摲?wù)器上已有的表與臨時表連接起來。您可能有權(quán)在任一服務(wù)器上創(chuàng)建臨時表。
如果您有權(quán)創(chuàng)建永久表,請在服務(wù)器 A 上使用永久表。然后,每當(dāng)用一個 Java 程序更改數(shù)據(jù)時,將數(shù)據(jù)從服務(wù)器 B 復(fù)制到服務(wù)器 A,并用另一個 Java 程序查詢它。
將兩個表中較小表中的數(shù)據(jù)插入 Java 程序中的 HashMap,其中 HashMap 的鍵是連接變量。然后逐行處理較大表中的結(jié)果集,在 HashMap 中查找連接的條目。
切換到 MariaDB 并使用 CONNECT 存儲引擎使您的 SQL Server 表可用于 MySQL 查詢。
你如何選擇策略?這取決于很多事情。你能從你的DBA krewe那里得到多少合作?你的桌子有多大?你總是處理所有的行,或者有時是一個子集?(您的示例查詢沒有WHERE
子句,所以您可能正在處理所有內(nèi)容。)您能否在 JVM 實例中獲得足夠的 RAM 來容納整個表?您需要每小時執(zhí)行多次還是每周執(zhí)行一次?每次可以花多少時間?
專業(yè)提示:對于像您的示例這樣的查詢,首先(在兩種服務(wù)器上)給出 SQL 命令,SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
這樣您就不會在檢索結(jié)果集時阻止其他程序訪問您的表。

TA貢獻(xiàn)1871條經(jīng)驗 獲得超8個贊
您應(yīng)該將結(jié)果映射到 POJO Arraylist,然后合并它們。
你也可以將它們放在第三個數(shù)據(jù)庫中,然后你就可以進(jìn)行任何sql查詢。
添加回答
舉報