描述:
备注:
将实表T中满足条件w的记录按列 C,…作为键创建索引文件对象f; 索引不会跟随组表更新(包括reset)。
F为T的字段名,有F时可以提升查询速度,使用索引取数的时候,只能取出索引字段C和字段F,F省略可取出所有字段。
创建索引文件时必须存在列C和索引文件对象f。
有h时且无@w选项时,创建长度为h的hash索引文件;有@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,并且C为String类型。 只支持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"的EID、DEPT字段数据创建排序索引文件index_dzdpx,索引字段为EID。 |
7 |
=file("index_px") |
索引文件对象。 |
8 |
=A3.index(A7;EID,NAME) |
给组表A3创建索引文件index_px,索引字段为EID、NAME,参数F省略,可读取所有字段。 |
9 |
=A3.icursor(EID,NAME,DEPT,SALARY;EID<20;A7,A5) |
通过索引文件查询组表中EID<20的EID、NAME、DEPT、SALARY字段的数据: |
创建hash索引文件:
|
A |
|
1 |
=file("empi.ctx").open() |
打开组表文件。 |
2 |
=file("index_hs") |
索引文件对象。 |
3 |
=A1.index(A2:10;DEPT,GENDER) |
为组表empi.ctx创建长度为10的hash索引文件,索引字段为DEPT,GENDER。 |
4 |
=A1.icursor(NAME,DEPT,GENDER,SALARY;[["HR","M"]].contain(DEPT,GENDER);A2) |
通过索引文件index_hs查询组表中DEPT为HR且GENDER为M的NAME、DEPT、GENDER、SALARY字段的数据,返回游标中的数据内容如下: |
创建全文索引文件:
|
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”的记录,将记录中的EID、NAME、BIRTHDAY字段的数据返回到游标中,数据内容如下: |
5 |
=file("index_qw1") |
|
6 |
=A1.index@w(A5:5;NAME) |
使用@w建立的全文索引文件,索引串大小写不敏感;参数h为5,表示每个索引串匹配的最大记录数。 |
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() |
关闭组表。 |