繁体   English   中英

如何从MySQL Java获取有限的数据

[英]How to fetch limited data from mysql java

我可以限制结果集中的行数吗? 我的表包含大约80万行,如果我从结果集中获取它们,那肯定会导致OOM异常。 每行有40列。 我不想同时处理它们,但是每一行都要过滤掉一些数据。

先感谢您。

您可以使用JDBC提取大小来限制结果集中的结果。 它比SQL LIMIT更好,因为它将在不更改查询的情况下也适用于其他数据库。 Jdbc diriver不会从数据库读取整个结果。 每次它将检索由提取大小指定的记录,并且不再有内存问题。

如下所示的方法应该是一种SQL解决方案,但效果不佳,因为每次您都必须获取越来越多的行。

假设您的ORDER BY基于唯一的 int ,并且一次将获取1000行。

SET currenttop = 0;
SET cuurentid = 0;
SELECT * FROM YourTable t
WHERE t1.ID > @currentID AND (@currentid := t1.ID) IS NOT NULL; 
LIMIT (@currenttop:=@currenttop+1000);

当然,您可以选择从Java代码中处理变量。

您可以在SQL查询中使用limit关键字,请参阅以下内容

SELECT * FROM tbl LIMIT 5,10;  # Retrieve rows 6-15

您可以在此处详细了解使用limit

干杯!

您有两种选择。 首先,为SQL查询添加一个限制。 其次,可以将JDBCTemplate.query()RowCallbackHandler一起使用,一次处理一行。 该模板将处理具有较大结果集的内存问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM