簡體   English   中英

使用Java在MySQL中處理大型表

[英]Working with large table in MySQL using Java

我正在嘗試用Java做簡單的應用程序,該應用程序應該插入數據或從MySQL DB讀取數據。

但是我要面對的是,我無法快速使用桌子。 假設我有兩列的表格。 第一個'frst'是bigint無符號唯一,並且具有從1,2,3 .... 300000000的值。第二個,我們將其稱為'result',是mediumint,其值具有1,1,2,2,3,1, 3,2 ... 1,3,1-每個“首”。

好吧,現在,我有數百萬的記錄。 實際上,數據庫文件有19GB。

當我嘗試運行時(從table_name中選擇frst,其中result = 2),這需要很長時間。

在我的Java應用程序中,我使用JDBC和Statement / ResultSet進行讀取,並使用PreparedStatement進行插入。

有人可以告訴我,如何使用這種大桌子嗎? 謝謝!!

首先,如果您要檢索很多條目,則希望查詢花費一些時間來檢索所有條目。 您可以考慮對結果進行分頁,以改善用戶體驗。

其次,您可以采取以下措施來提高查詢性能:

create index my_idx on table_name(result, frst);

有關更多詳細信息,請參見mysql doc

根據要對表中的數據執行的操作,您可能希望向數據庫中推送一些邏輯(例如計數,最大值,最小值,平均值等),因為它們是為處理大量數據而構建的。 除此之外,這還將減少數據庫與應用程序之間的流量。

您可以嘗試索引正在處理的列,這將使它們搜索起來更快。

CREATE INDEX yourIndexName
ON YOUR_TABLE_NAME(YOUR_COLUMN_NAME);

請注意,這可能會導致更新或插入新記錄時性能下降,因為索引也必須更新/插入。 欲了解更多信息,請參考這里

暫無
暫無

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

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