delphi – 快速读取Nexus数据库表
发布时间:2020-12-15 09:31:06 所属栏目:大数据 来源:网络整理
导读:我想尽快将表的全部内容读入内存.我正在使用Nexus数据库,但可能有一些我可以使用的技术适用于Delphi中的所有数据库类型. 我正在查看的表有60,000条记录,有20列.所以不是一个庞大的数据集. 从我的分析中,到目前为止我找到了以下内容: 使用TnxTable直接访问表
我想尽快将表的全部内容读入内存.我正在使用Nexus数据库,但可能有一些我可以使用的技术适用于Delphi中的所有数据库类型.
我正在查看的表有60,000条记录,有20列.所以不是一个庞大的数据集. 从我的分析中,到目前为止我找到了以下内容: >使用TnxTable直接访问表并不比使用SQL查询和“SELECT * FROM TableName”更快或更慢 我得到的表现是 >循环所有记录需要3.5秒 我的代码示例 var query:TnxQuery; begin query.SQL.Text:='SELECT * FROM TableName'; query.Active:=True; while not query.Eof do query.Next; 这在60,000行表上需要3.5秒. 这种表现听起来合理吗?我能采取其他方法让我更快地读取数据吗? 我目前正在同一台计算机上的服务器上读取数据,但最终可能是来自LAN上的另一台服务器. 解决方法
您应该使用带有TnxTable的BlockRead模式以获得最佳读取速度:
nxTable.BlockReadOptions := [gboBlobs,gboBookmarks]; //leave out gboBlobs if you want to access blobs only as needed //leave out gboBookmarks if no bookmark support is required nxTable.BlockReadSize := 1024*1024; //1MB // setting block read size performs an implicit First // while block read mode is active only calls to Next and First are allowed for navigation try while not nxTable.Eof do begin // do something.... nxTable.Next; end; finally nxTable.BlockReadSize := 0; end; 此外,如果您不需要在特定索引上设置范围,请确保使用顺序访问索引以实现最快的访问. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |