在TQuery结果集中查找记录的最快方法

Bas*_*scy 5 delphi reportbuilder nexusdb

我想知道最好的(最快的)读取方式是在Tquery SQL语句的结果集中查找记录。

到目前为止,我一直在使用TQuery.Locate,如果我是对的,那是唯一可用于在结果集中搜索的语句。那么我们如何优化呢?

我有一些想法,但还没有时间在大型数据集上进行比较:

假设我们有一个包含以下字段的表:

Create Table aTable (
 ID int, 
 Name1 varchar(50), 
 Name2 varchar(50));
Run Code Online (Sandbox Code Playgroud)

和以下查询:

SELECT ID, Name1, Name2 from aTable
Run Code Online (Sandbox Code Playgroud)

我们想通过记录的ID在结果集中找到记录

  • 如果aTable在ID上有索引,定位会更快吗?
  • 如果在SQL语句中添加“按ID排序”,定位会更快吗?

有什么想法吗?

[编辑]澄清此用法:查询由Reportbuilder数据视图执行,然后通过数据管道(即TQuery.Dataset)使其可用。在自定义报告中,我需要根据一些更高级别的ID来传递管道。因此,不使用查询不适用于此处。我只是想知道我上面的任何建议是否可以加快速度。

Bir*_*ger 1

如果您需要在大型数据集上经常执行此操作,则最好将数据集转换为记录数组并在索引字段上实现一些自定义搜索例程。