你问的应该是 数据库游标(Cursor)里的 fetch_size 怎么调,常见于 Oracle / PostgreSQL / JDBC / Python(cx_Oracle、psycopg2、SQLAlchemy)等场景。
下面按常见情况给你说明:
fetch_sizefetch_size 指的是 一次从数据库取回多少行到客户端,不是最终结果集大小。
Statement stmt = conn.createStatement();
stmt.setFetchSize(500); // 每次取500行
ResultSet rs = stmt.executeQuery("SELECT * FROM big_table");
或 PreparedStatement:
PreparedStatement ps = conn.prepareStatement(sql);
ps.setFetchSize(1000);
Oracle 推荐 100–1000
MySQL 默认就流式,fetch_size 影响较小
import cx_Oracle
cursor = conn.cursor()
cursor.arraysize = 500 # cx_Oracle 里叫 arraysize
cursor.execute("SELECT * FROM big_table")
⚠️ 注意:cx_Oracle 是 arraysize,不是 fetch_size
cursor = conn.cursor()
cursor.itersize = 2000 # 默认 2000
for row in cursor.execute("SELECT * FROM big_table"):
...
result = conn.execution_options(stream_results=True, fetch_size=1000)
或:
stmt = select(...).execution_options(fetch_size=500)
SET ARRAYSIZE 500
❌ fetch_size = 限制结果条数(那是 LIMIT)
❌ 越大越快(可能 OOM)
❌ MySQL 必须调(一般不用)
如果你能告诉我:
我可以直接给你最优 fetch_size 配置代码。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。