T.index()

阅读(1414) 标签: 序表, 索引表,

描述:

为序表建立索引表。

语法:

T.index(n)

备注:

为序表T建立长为n的索引表, n0或序表重置键时将清除索引表。

建立索引时要求T的主键唯一,否则报错。

参数:

T

有键的序表。

n

索引长度,缺省使用默认的索引长度

选项:

@s

T的基本键是排号键时建立成多层树状索引,忽略n

@n

为序表建立序号索引,忽略参数n T中无序号键时直接用记录序号。

序号索引用于外键序号化,即事实表的外键值对应维表记录的序号,使用P.join()P.switch()等函数做表关联计算时,关联表达式中的序号键可省略。

@m

并行建立索引。

返回值:

序表

示例:

 

A

 

1

=demo.query("select EID,NAME,SALARY from EMPLOYEE where EID<4")

 

2

=A1.keys(EID)

设置A1的键为EID

3

=A1.index(10)

为序表建立长度为10的索引表。

4

=A1.keys(EID,NAME)

A1序表重置键,索引表被清除。

建立多树状索引:

 

A

 

1

=3.new(k(~:2):id,~*~:num)

创建序表,其中id为排号类型。

2

=A1.keys(id)

设置A1的键为id

 

3

=A2.index@s()

A1的基本键为排号,使用@s选项,建立多层树状索引。

4

=A2.index(0)

参数为0,清除索引表。

建立序号索引:

 

A

 

1

=connect("demo").query("SELECT * FROM CITIES")

返回序表:

2

=connect("demo").query("SELECT * FROM STATECAPITAL")

返回序表:

 

3

=A2.index@n()

A2表建立序号索引。

4

=A1.switch(STATEID,A2)

A1中的CITIES表作为事实表,A3中的STATECAPITAL作为维表;

通过switch()函数执行表关联计算,将CITIES表中的STATEID键值切换为STATECAPITAL的指引记录,计算过程中会使用外键表的索引表,此时表达式中可以省略序号键,等同于A1.switch(STATEID,A2:#)

返回结果如下:

相关概念:

r.key()