我正在尝试用Java做简单的应用程序,它应该从MySQL DB中插入数据或读取数据。
但我面临的是,我无法快速使用我的桌子。假设我有两列的表格。首先'frst'是bigint无符号唯一,并且存在1,2,3 ...... 300 000 000的值。其次,我们称之为'结果',是中等的,其值为1,1,2,3,1, 3,2 ... 1,3,1 - 每个'第一'。
嗯,现在,我有数百万的记录。实际上,DB文件有19GB。
当我尝试运行时(从table_name中选择第一个结果= 2),需要很长时间。
在我的java应用程序中,我使用JDBC和Statement / ResultSet进行读取,使用PreparedStatement进行插入。
有人可以告诉我,如何使用这样的大表?谢谢!!
答案 0 :(得分:2)
首先,如果要检索大量条目,则期望查询需要一些时间来检索所有条目。您可以考虑对结果进行一些分页,以改善用户体验。
其次,您可以采取的措施是创建一个索引,如:
def mymin(x, y):
if x < y:
return x
return y
有关详细信息,请参阅mysql doc。
答案 1 :(得分:0)
根据您对表中数据的处理方式,您可能希望将一些逻辑推送到数据库(如count,max,min,average,...),因为它们是为处理大量数据而构建的数据。除此之外,这还将减少数据库与应用程序之间的流量。
答案 2 :(得分:0)
您可以尝试索引正在处理的列,这样可以更快地搜索它们。
CREATE INDEX yourIndexName
ON YOUR_TABLE_NAME(YOUR_COLUMN_NAME);
请注意,在更新或插入新记录时,这可能会导致性能降低,因为索引也必须更新/插入。有关详细信息,请参阅here