繁体   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