本章介绍index()函数的多种用法。
描述:
为序表的键建立索引表
语法:
T.index(n)
备注:
为序表T的键建立长为n的索引表,n为0或序表重置键时将清除索引表;n省略则自动选长度。如果需要多次根据键来查找数据,在建立了索引表之后可以提高效率。建立索引时假定记录的主键唯一,否则出错。
参数:
T |
有键的序表 |
n |
索引长度 |
选项:
@s |
T的键是排号时则建立成多层树状索引,忽略n |
返回值:
序表
示例:
|
A |
|
1 |
=demo.query("select EID,NAME,SALARY from EMPLOYEE where EID<4") |
|
2 |
=A1.keys(EID) |
设置A1的键为EID |
3 |
=A1.index(10) |
为序表键建立长度为10的索引表 |
相关概念:
描述:
为内表的键建立索引表
语法:
T.index(n)
备注:
为内表T的键创建索引长度为n的索引表,排号键时省略n,如果需要多次根据键来查找数据,在建立了索引表之后可以提高效率。建立索引时假定记录的主键唯一。
参数:
T |
主键唯一的内表 |
n |
索引长度。 |
返回值:
内表
示例:
|
A |
|
1 |
=file("D:\\emp3.ctx") |
|
2 |
=A1.create(#EID,NAME;EID) |
创建组表基表 |
3 |
=demo.cursor("select EID,NAME from employee where EID< 10") |
|
4 |
=A2.append(A3) |
|
5 |
=A2.attach(table3,#GENDER) |
在基表上添加附表 |
6 |
=demo.cursor("select EID,GENDER from employee where EID< 10") |
返回游标 |
7 |
=A5.append(A6) |
在附表中追加游标记录 |
8 |
=A5.memory() |
用附表生成内表 |
9 |
=A8.keys(EID) |
设置内表的键为EID |
10 |
=A8.index(10) |
建立长度为10的索引表 |
描述:
语法:
T.index(I:h,w;C,…;F,…)
备注:
将实表T中满足条件w的记录按列 C,…作为键创建索引I,其中w可以省略;有h时创建平均长度为h的hash索引;创建索引时必须存在列C和索引名称I,索引名称I不可重复,索引创建成功后自动生成名称唯一的索引文件。只有I参数时删除索引I,参数全部为空时删除所有索引;当是hash索引时,只能进行等值查询,也可以使用contain语法。参数C不允许是从主表继承的字段。
F为附表的字段名,有参数F时,将F字段记入索引文件,当使用该索引取出记录的时候,只能取出索引字段C和字段F,该类索引的优势在于可以通过C的值快速查询出来F的值。F省略时索引中记录所有实表字段的位置信息。
参数:
T |
实表 |
I |
索引名称 |
w |
筛选条件,可省略,缺省读取全集 |
C |
建立索引的字段 |
h |
索引长度 |
F |
实表的字段名,可省略 |
选项:
@2 |
只有参数I时,主动加载索引的第二层并保持 |
@3 |
只有参数I时,主动加载索引的第三层并保持 |
@0 |
只有参数I时,释放 |
@w |
按列C建立全文检索,可支持like(“*X*”)式检索 |
返回值:
Boolean值
示例:
|
A |
|
1 |
=file("D:\\emp1.ctx") |
|
2 |
=A1.create(#EID,NAME;EID) |
创建以EID为排号键、分段键的组表基表 |
3 |
=demo.cursor("select EID,NAME from employee where EID< 10") |
|
4 |
=A2.append(A3) |
在基表中追加游标记录 |
5 |
=A2.attach(table1,DEPT,GENDER) |
在基表上增加附表table1 |
6 |
=demo.cursor("select EID,DEPT,GENDER from employee where EID< 10") |
|
7 |
=A5.append(A6) |
在实表table1中追加游标记录 |
8 |
=A7.index(test_index,GENDER=="F";DEPT;) |
用DEPT字段建test_index1索引 |
9 |
=A5.index(test_index3,["F"].contain(GENDER);DEPT;) |
使用contain语法,用DEPT字段建test_index3索引 |
10 |
=A5.index(idx1:10;DEPT;) |
用DEPT字段创建长度为10的索引idx1 |
11 |
=A5.index(test_index3) |
删除索引test_index3 |
12 |
=A5.index() |
删除所有索引 |
13 |
=A5.index(test_index,GENDER=="F";DEPT;GENDER) |
建立的索引,在通过该索引取数时,只能取出索引字段DEPT和字段GENDER |
14 |
=A7.index@w(test_index,GENDER=="F";DEPT;) |
按列DEPT建立全文索引 |
15 |
=A14.icursor (;like(DEPT,"*ale*"),test_index).fetch() |
使用like(“*X*”)式查询 |