一.键值排序
二.索引查找文件
一.行存
行存组表文件创建用参数@r :
A | |
---|---|
1 | =file(“row.ctx”).create@r(#id,data) |
二.列存
列存组表文件创建无需参数:
A | |
---|---|
1 | =file(“col.ctx”).create(#id,data) |
三.行存、列存查找
行、列存组表文件用索引进行批量数据查找:
A | |
---|---|
1 | =file.open(.icursor(;A.contain(id),id_idx).fetch() |
说明: icursor中支持的过滤条件包括==,>,<>=,<=,contain(),like()。其中,对A.contain()的序列A会自动排序。
1.打开p2.1.dfx,使用列存组表文件col.ctx ,生成行存组表文件row.ctx,并对其id列建索引
2.打开p2.2.dfx,对行式存储和列式存储的组表文件,分别按同样的1000个键值,取出相同的记录
三.带值索引查找数据文件
创建带值索引
A | |
---|---|
1 | =file.open().index(id_F_data_idx;id;data) |
多值、多字段情况的写法示例: index(id_idx;id 1,id2… idN;data1,data2.dataN)。
使用带值索引查找
A | |
---|---|
1 | =file.open().icursor(;A.contain(id), id_F_data_idx).fetch() |
1.打开p2.3.dfx,对列存组表文件col.ctx,对其id列,创建data的带值索引
2.打开p2.4.dfx,使用带值与非带值索引,对列存组表文件col.ctx,分别按同样的1000个键值,取出相同的记录
四.索引缓存
1.打开p2.5.dfx,多次执行本dfx,记录前5次的时间,找出其中的规律,思考这个现象的原因
发现执行次数越多,速度越快,因为集算器执行dfx文件,是通过操作系统读取文件的,操作系统发现我们多次读取同一个文件,就可能利用内存将这个文件缓存。那我们后面执行就是从内存中读取,而不是硬盘
2.打开p2.6.dfx,执行脚本,观察加载索引缓存时间、执行时间和不加载索引缓存的执行时间
3级索引缓存
2级索引缓存
不加索引缓存