在Delphi中实现SQL"Where"构造的最佳方法是什么?

And*_*row 0 delphi firebird firebird2.5 delphi-xe2

我有带字段的Firebird数据库表(FK - ForeignKey字段):

ID integer,
FACILITY_ID integer, --FK
SERVICE_ID integer, --FK
PROVIDER_ID integer, --FK
SELLER_ID integer, --FK
TARIFF_GROUP_ID integer, --FK
DATE_START date,
N_NORMATIVE_VALUE numeric(15,2),
N_METER_VALUE numeric(15,2),
T_NORMATIVE_VALUE numeric(15,2),
T_METER_VALUE numeric(15,2),
IS_ACTIVE smallint
Run Code Online (Sandbox Code Playgroud)

我想将这个表加载到内存中并在我的Delphi程序中使用它(readonly).我必须搜索所有FK的记录(......其中FACILITY_ID =:FACILITY_ID和SERVICE_ID =:SERVICE_ID等...)

什么是该任务的最佳容器:动态数组或列表或其他什么?以及如何实现此搜索?哈希可能吗?

它不是非常大的表(1000条记录),但将在FOR构造中使用超过100000次迭代.

我正在使用带有IBX和UIB和FB25的Delphi XE2

Lar*_*tig 5

您是否建议您将整个表加载到内存中,然后直接在Delphi中复制数据库已经提供的过滤功能?这似乎是不必要的努力 - 为什么不只是对数据库运行SELECT语句来获取所需的记录?

无论如何,保存从数据库中检索数据的最佳结构是一些TDataSet后代类.实际上有几组组件可以用于Firebird,具体取决于您可以使用的Delphi SKU.以下是可用的Firebird组件列表:http://www.firebirdfaq.org/faq8/.