我有带有字段的Firebird DB表(FK - ForeignKey Fields):
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
我想将此表加载到内存中并在我的Delphi程序中使用它(readonly)。我必须搜索所有FK的记录(......其中FACILITY_ID =:FACILITY_ID和SERVICE_ID =:SERVICE_ID等...)
该任务的最佳容器是什么:动态数组或列表或其他什么?以及如何实现此搜索?哈希可能吗?
它不是很大的表(1000条记录),但将在FOR构造中使用,迭代次数超过100000次。
我正在使用Delphi XE2和IBX& UIB& FB25
答案 0 :(得分:5)
您是否建议您将整个表加载到内存中,然后直接在Delphi中复制数据库已经提供的过滤功能?这似乎是不必要的努力 - 为什么不对数据库运行SELECT语句来获取所需的记录?
无论如何,保存从数据库检索的数据的最佳结构是一些TDataSet后代类。实际上有几组组件可以用于Firebird,具体取决于您可以使用的Delphi SKU。以下是可用的Firebird组件列表:http://www.firebirdfaq.org/faq8/。
答案 1 :(得分:1)
我推荐过去成功使用过的TxQuery组件。它是一个开源的内存中SQL引擎。