首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在TQuery结果集中查找记录的最快方法

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

Stack Overflow用户
提问于 2011-08-08 11:20:45
回答 3查看 8.4K关注 0票数 6

我想知道最好(阅读:最快)的方法是在Tquery语句的结果集中找到记录。

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

我有一些想法,但还没有时间在大型数据集中比较它们:

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

代码语言:javascript
复制
Create Table aTable (
 ID int, 
 Name1 varchar(50), 
 Name2 varchar(50));

以及以下查询:

代码语言:javascript
复制
SELECT ID, Name1, Name2 from aTable

我们希望通过其ID在结果集中找到一个记录。

如果

  • 有ID索引,那么aTable的定位速度会更快吗?如果我在SQL语句

中添加"Order“,那么

  • 会更快。

对此有什么想法吗?

编辑以澄清这一用途:查询由Reportbuilder执行,然后通过datapipeline (即TQuery.Dataset)提供。在自定义报告中,我需要基于更高级别的ID来遍历管道,所以这里不使用查询是不适用的。我只是想知道我上面的任何建议是否会加快速度。

EN

回答 3

Stack Overflow用户

发布于 2011-08-08 13:24:40

以下是一些你可能觉得有帮助的建议

query

  • Use

  • 仅在索引列上使用()方法,
  • 使用"order by“索引列,
  • 使用
  • ,然后根据您的需要(

H 115)对FastReports进行一次尝试

如果在大型数据集中有主/详细信息,请不要获取所有详细信息记录--换句话说--不要使用本地主详细信息--让DB引擎只给出所需的记录。

票数 4
EN

Stack Overflow用户

发布于 2011-08-08 11:47:34

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

票数 1
EN

Stack Overflow用户

发布于 2011-08-08 12:01:44

您应该添加要搜索的ID,以便只检索预期的行。

在ReportBuilder数据视图中,转到查询设计器,然后到Search选项卡,然后添加带有“自动搜索”选项的字段设置。

然后转到ReportBuilder Calc视图,从菜单中选择“view / Events”。单击"Report object“树视图中的报表根项,然后双击"OnGetAutoSearchValues”并检索期望值:

代码语言:javascript
复制
var
    Fld : TppAutoSearchField;
    i   : integer;     
begin
  for i:=0 to Report.AutoSearchFieldCount-1 do
  begin
   Fld := Report.AutoSearchFields[i];

    if Fld<>nil then
    begin    
      if (Fld.FieldName='FIRST_PARAM') then 
      begin
        Fld.SearchExpression := .....;
      end
      else if (uppercase(Fld.FieldName)='2ND_PARAM') then
      begin 
        Fld.SearchExpression := intToStr(...);
      end;
    end;
  end;  
end;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6981348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档