MySQL C API 执行 select 语句后有1百万条记录,
而我只需要100条记录,但是调用 mysql_free_result()仍然会等到所有记录从服务器端返回
测试过很多MySQL客户端,全部都是等到所有记录都返回到客户端
不知道有什么方法,能在我读完100条记录后,中止当前记录的传输
(limit 能限制select返回的行数,但这不是我想要的结果,
MySQL的配置变量,也做不到控制返回的行数或内存)在SQL Server中, 即使select 有1百万记录
oledb 在处理记录集的时候可以随时中止
有对MySQL C API 熟悉的,能帮忙给个提示吗
而我只需要100条记录,但是调用 mysql_free_result()仍然会等到所有记录从服务器端返回
测试过很多MySQL客户端,全部都是等到所有记录都返回到客户端
不知道有什么方法,能在我读完100条记录后,中止当前记录的传输
(limit 能限制select返回的行数,但这不是我想要的结果,
MySQL的配置变量,也做不到控制返回的行数或内存)在SQL Server中, 即使select 有1百万记录
oledb 在处理记录集的时候可以随时中止
有对MySQL C API 熟悉的,能帮忙给个提示吗
100万记录,你要么使用mysql_store_result, (将全部结果取到客户端)
要么使用mysql_use_result(结果在server端存储)
但都要求把结果全部取完。一次取100万条记录,确实 不是一个很好的用法。该用limit就用limit.
另一方面,如果你正在客户端一侧为各行进行大量的处理操作,或者将输出发送到了用户可能会键入“^S”(停止滚动)的屏幕,就不应使用mysql_use_result()。这会绑定服务器,并阻止其他线程更新任何表(数据从这类表获得)。使用mysql_use_result()时,必须执行mysql_fetch_row(),直至返回NULL值,否则,未获取的行将作为下一个检索的一部分返回。C API给出命令不同步错误,如果忘记了执行该操作,将不能运行该命令。
目前MYSQL的版本不能支持你的要功能要求,不过可以用limit的sql后缀变相实现。
业务处理逻辑都是可以变通的。或者你优化下你的sql,让它不要select100万记录出来?