gpt4 book ai didi

database - 在数据库表中快速定位

转载 作者:搜寻专家 更新时间:2023-10-30 22:08:32 25 4
gpt4 key购买 nike

我有一个大约有 50000 行和 16 列的数据库(至少目前是这样)。当在应用程序的主窗体中按下按钮时,程序会进行一些计算,并从中计算出结果。我需要定位表的当前记录作为计算结果。

例子:我有结果35500。我需要将位置设置为表中的记录号35500。我怎样才能快速完成它?我使用 ADO(无 SQL)并尝试使用类似

的指令
table.First;
table.MoveBy(35500);

但是在这种情况下它们非常慢。我还必须提到定位是在没有任何组件(如 TDBGrid 或其他任何组件)的情况下完成的,因此它必须是一种更快的方式

最佳答案

我知道你说没有连接到你的数据集的 db-aware 控件,但是你是否尝试过比较执行 MoveBy(50000) 的时间,它是否被调用包围.DisableControls.EnableControls?您可能认为,如果没有任何 db-aware 组件,是否使用 .DisableControls.EnableControls 没有什么区别,但事实上确实如此。

在我的系统上,对 Sql Server (2014) 执行 MoveBy(50000) 需要 19+秒没有 .DisableControls.EnableControls 和 0.2 秒,这是一个巨大的差异。

我认为我对之前这个问题的回答可能是相关的:Why does scrolling through ADOTable get slower and slower?

顺便说一句,MoveBy() 主要用于可以通过其 Distance 参数表示转到所需行的最佳方式的情况。正如 Christine Ross 在评论中指出的那样,如果您知道要移动到的行中一个或多个字段的值,使用 bool Locate 函数会更快,如

if AdoQuery1.Locate('CountryCode', 'US', [])  then

Locate 允许您指定多个要匹配的字段,如

if AdoQuery1.Locate('CountryCode;Surname', VarArrayOf(['US', 'Smith']), []) then

关于database - 在数据库表中快速定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41191206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com