关于Paradox多字段索引的用法(100分)

  • 主题发起人 主题发起人 tomye
  • 开始时间 开始时间
T

tomye

Unregistered / Unconfirmed
GUEST, unregistred user!
我是一个Foxpro出生的程序员,在Foxpro中可以定义一个索引如:
index on field1+field2+field3 tag tag1 comp
然后可以用select * from XXX where field1+field2+field3=XXX
来检索,速度非常快,Delphi不支持这种索引,而支持Praradox的多字段
索引,可是在一个TQuery中如何写检索多字段的SQL呢?



 
各位,请不要看都不看呀。
 
help me pls
 
“select * from XXX where field1+field2+field3=XXX”
这个问题我帮你!

用过滤技术不是也很方便吗?
procedure TForm1.Table1FilterRecord(DataSet: TDataSet;
var Accept: Boolean);
begin
Accept:=((Table1.FieldByName ('field1').AsInteger+
Table1.FieldByName ('field2').AsInteger+
Table1.FieldByName ('field3').AsInteger)=210);

end;

还要把Table1的Filtered属性设为 true
 
如果库不是很大,可用过滤,而且无需索引.
否则,建议用SetRange,需要索引,速度非常快.

Table1.IndexName:='Index1';
//Index1: Field1,Field2
Table1.SetRange([Fd1StartVaule,Fd2StartVaule],
[Fd1EndVaule,Fd2endVaule]);

 
Praradox的SQL是伪SQL,速度非常慢.
至少我不在Praradox中用SQL.
 
Paradox的索引可以实现你的要求;可以索引多个任意字段。
只是查询时的用法不同,建议用SetRange([Field1X,Field2X],
[Fiedl1X,Field2X])即可找到Field1=Field1X且Field2=Field2X的记录。
用SQL时,如果where 部分的字段有索引,也很快。
 
SQL 可以这样写:
select * from XXX where field1=X and field2=X and field3=X

如果XXX有一个索引是Field1,Field2,Field3, 那么,速度会很快。
 
多人接受答案了。
 
后退
顶部