T.index(f:h,w;C,…;F,…)

阅读(1037) 标签: 创建, 检索文件, boolean值,

描述:

为实表创建索引文件

语法:

T.index(f:h,w;C,…;F,…)

备注:

将实表T中满足条件w的记录按列 C,…作为键创建索引文件对象f 索引不会跟随组表更新(包括reset)。

FT的字段名,有F时可以提升查询速度,使用索引取数的时候,只能取出索引字段C和字段FF省略可取出所有字段。

创建索引文件时必须存在列C和索引文件对象f

h时且无@w选项时,创建长度为hhash索引文件;有@w选项时创建全文索引文件;参数h@w选项缺省则创建排序索引文件;创建hash索引与全文索引时,要求参数F省略。

T是附表时,参数C不允许是从主表继承的字段。

参数:

T

实表。

f

索引文件对象。

w

筛选条件,可省略,缺省读取全集。

C

建立索引的字段。

h

hash索引长度,可省略。

F

实表的字段名,可省略。

选项:

@2

只有参数f时可使用,用于加载索引文件至内存,可以提高查询性能。

@3

只有参数f时可使用,用于加载索引文件至内存,相对于@2性能更高但占用内存也更多。

@0

只有参数f时,释放索引文件占用的内存。

@w

按列C建立全文索引文件,使用@w时只能有一个C,并且CString类型。

只支持like("*X*")式检索,X可以是字母/数字/常见字符组成的串,也可以是汉字,X是字母/数字/常见字符组成的串时长度必须大于2

索引串为字母时大小写不敏感。

使用@w时,h解释为每个索引串匹配的最大记录数,h缺省则不限制。

返回值:

实表

示例:

创建排序索引文件:

 

A

 

1

=demo.query("select EID,NAME,BIRTHDAY,DEPT,GENDER,HIREDATE,SALARY from employee ")

返回序表。

2

=file("empi.ctx")

 

3

=A2.create@y(#EID,NAME,BIRTHDAY,DEPT,GENDER,HIREDATE,SALARY)

创建组表。

4

=A3.append@i(A1)

A1序表中的数据追加到组表中。

5

=file("index_dzdpx")

索引文件对象。

6

=A3.index(A5,DEPT=="HR";EID;DEPT)

给组表A3 中满足条件DEPT=="HR"EIDDEPT字段数据创建排序索引文件index_dzdpx,索引字段为EID

7

=file("index_px")

索引文件对象。

8

=A3.index(A7;EID,NAME)

给组表A3创建索引文件index_px,索引字段为EIDNAME,参数F省略,可读取所有字段。

9

=A3.icursor(EID,NAME,DEPT,SALARY;EID<20;A7,A5)

通过索引文件查询组表中EID<20EIDNAMEDEPTSALARY字段的数据:

创建hash索引文件:

 

A

 

1

=file("empi.ctx").open()

打开组表文件。

2

=file("index_hs")

索引文件对象。

3

=A1.index(A2:10;DEPT,GENDER)

为组表empi.ctx创建长度为10hash索引文件,索引字段为DEPT,GENDER

4

=A1.icursor(NAME,DEPT,GENDER,SALARY;[["HR","M"]].contain(DEPT,GENDER);A2)

通过索引文件index_hs查询组表中DEPTHRGENDERMNAMEDEPTGENDERSALARY字段的数据,返回游标中的数据内容如下:

创建全文索引文件:

 

A

 

1

=file("empi.ctx").open()

打开组表文件。

2

=file("index_qw")

索引文件对象。

3

=A1.index@w(A2;NAME)

使用@w选项,为组表empi.ctx创建全文索引文件,索引字段为NAME

4

=A1.icursor(EID,NAME,BIRTHDAY;like(NAME,"*ann*");A2)

通过索引文件index_qw查询组表中NAME值中含有字串“ann”的记录,将记录中的EIDNAMEBIRTHDAY字段的数据返回到游标中,数据内容如下:

5

=file("index_qw1")

 

6

=A1.index@w(A5:5;NAME)

使用@w建立的全文索引文件,索引串大小写不敏感;参数h5,表示每个索引串匹配的最大记录数。

7

=A1.icursor(EID,NAME,BIRTHDAY;like(NAME,"*ANN*");A5)

返回游标的数据内容如下:

主动加载组表的索引文件:

 

A

 

1

=file("empi.ctx").open()

打开组表文件。

2

=A1.index@2(file("index_qw"))

加载组表的索引文件到内存。

3

=A1.icursor(EID,NAME,BIRTHDAY;like(NAME,"A*");file("index_qw"))

使用已经加载到内存中的索引文件进行组表数据查询。

4

=A1.index@0(file("index_qw"))

释放索引文件占用的内存。

5

>A1.close()

关闭组表。