我不是 Delphi 程序员,但我有一个旧的 Delphi 7 应用程序需要修复,并且它正在使用 ADO。
数据库表 (MS Access) 包含 +100,000 行,当我设置 ADOTable.Active=true 时,它开始将整个表加载到 RAM 中,这需要大量内存和时间。
如何防止 ADO 加载整个表?我尝试设置 MaxRecords 但没有帮助。
基本上我们所做的就是 att 程序启动:
// Connect to database
DataModule.MyADOConnection.Connected:=true;
DataModule.MeasurementsADOTable.MaxRecords:=1;
// Open datatables
DataModule.MeasurementsADOTable.Active:=true;
设置 Active=true 后,它开始将整个测量结果加载到 RAM 中,这需要时间!
我们正在使用 MSDASQL.1 提供程序。也许它不支持 MaxRecords 属性?
如何向此数据对象添加一些限制查询以仅“从测量中加载 TOP 1 *”?
您可以使用 TADOQuery 来限制 sql 查询的结果集。或者您可以使用 TADOTable 并设置光标位置 http://docs.codegear.com/docs/radstudio/radstudio2007/RS2007_helpupdates/HUpdate4/EN/html/delphivclwin32/ADODB_TCustomADODataSet_CursorLocation.html到服务器端游标以防止客户端将完整的结果集加载到内存中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)