Java 在从mysql检索数千条记录时提高性能

Java 在从mysql检索数千条记录时提高性能,java,mysql,Java,Mysql,当我检索满足特定条件的记录时,我有一个表包含超过40000条记录,这需要花费很多时间 是否有任何提高性能的解决方案?如果您基于另一个不是主键的列进行大量查询,请尝试向您在WHERE子句中放入的列添加索引 另外,如果您正在使用any,那么优化JOINs将有所帮助。您可以使用索引来提高性能,请检查。您还可以运行explain命令,例如“explain select*from mytable,其中someField='Something';”看看它的回报,但我认为“索引”解决方案应该足够好了 也可以考

当我检索满足特定条件的记录时,我有一个表包含超过40000条记录,这需要花费很多时间


是否有任何提高性能的解决方案?

如果您基于另一个不是主键的列进行大量查询,请尝试向您在
WHERE
子句中放入的列添加索引


另外,如果您正在使用any,那么优化
JOIN
s将有所帮助。

您可以使用索引来提高性能,请检查。

您还可以运行explain命令,例如“explain select*from mytable,其中someField='Something';”看看它的回报,但我认为“索引”解决方案应该足够好了

也可以考虑把表格分成几个简单的表格。我不知道您的结构是什么,但我在过去的示例中看到过,人们会在同一个表中保留冗余数据,例如:将客户名称和地址放在同一个表中,您可以将其拆分为客户和地址,然后仅对一个表执行查询


希望这能有所帮助。

第一步:找出是否花费时间运行查询,或是否将数据传输回您

运行此查询需要多长时间-

SELECT COUNT(*)
FROM
( [your query that returns 40k rows] ) AS butts;
如果很快,那么大部分时间可能都花在将数据传输回客户机上。研究使用MySQL的压缩


如果服务器处理查询花费了很长时间,那么可能是可以通过适当的规范化和索引使用来修复的,正如其他人所提到的。要获得优化特定查询的帮助,您应该为所有涉及的表以及查询本身粘贴“创建表”。

SQL的另一个简单优化是从表中返回较少的列。如果只显示SQL表中的两个字段,则在有人需要查看特定记录之前,不要检索其余字段。

什么是“4个以上缺少记录”?我假设您已设置索引?40000行对于数据库来说不算什么。您可能正在做一些可怕的事情,使您的数据库变得如此缓慢。您是对的,人们应该规范化他们的数据,这只是DBA 101。但他的问题在于数据检索性能,标准化在这方面没有帮助!恰恰相反:)好吧,它帮助我提高了我几年前工作的某个遗留项目的性能,但我认为每种情况都不同:)索引在从数据库检索数据时提高了性能,但在将数据输入表时需要时间。还有其他解决方案吗?