文章插图
代码1.3.2
代码1.3.2,对组表使用cs.select()函数进行查询,耗时为:13855毫秒 。
文章插图
代码1.3.3
代码1.3.3,对组表使用T.find()函数进行查询,耗时为:77毫秒 。
对比可见:对于有维的组表,可以使用类似序表的T.find()函数,进行单个或者批量键值的查询,其查询效率远高于从筛选后的游标中取数 。
2 索引查找
组表上可以建立三种索引,每种索引针对的情况也不同,分别为:
1、 hash索引,适合单值查找,比如枚举类型;
2、 排序索引,适合区间查找,比如数字、日期、时间类型;
3、 全文索引,用于模糊查询,比如字符串类型 。
下面我们来建立一个组表,使其数据类型覆盖以上三种索引,如下:
文章插图
代码2.1
代码2.1建立的组表,前十条记录如下:
文章插图
图2.1
文章插图
代码2.2
代码2.2,根据每列数据类型的特点,建立不同类型的索引 。建立好的索引和组表文件如图2.2:
文章插图
图2.2
集算器能自动识别条件找到合适的索引,等值和区间都可以,like(“A*”)式的也支持 。我们来看下效果:
等值查找
文章插图
代码2.3
文章插图
代码2.4
代码2.3是没有省略索引名称的写法,代码2.4是省略索引名称的写法 。两者时间消耗基本相同,都是100毫秒左右 。
文章插图
代码2.5
代码2.5使用普通游标查询同样的记录,查询耗时则需要40秒左右 。
区间查找
文章插图
代码2.6
代码2.6对Subscriber使用排序索引,进行区间查找,查询耗时是70毫秒左右 。
文章插图
代码2.7
代码2.7使用普通游标查询同样条件的记录,查询耗时则需要40秒左右 。
模糊查找
文章插图
代码2.8
代码2.8对Company使用全文索引,进行模糊查询,查询耗时是1500毫秒左右 。
文章插图
代码2.9
代码2.9使用普通游标查询同样条件的记录,查询耗时则需要40秒左右 。
当数据规模更大时,例如:
文章插图
代码2.10
代码2.10,建造了10亿条结构如图2.3的组表文件employee.ctx 。
文章插图
【性能优化技巧 - 查找】
图2.3
文章插图
代码2.11
代码2.11中,对大部分列建立了索引 。组表与索引的各个文件如图2.4 。
文章插图
图2.4
多等值条件项&&时,可以分别为每个字段建立索引 。集算器能够快速在多个索引中用归并算法计算交集 。比如:
文章插图
代码2.12
代码2.12,查询条件均为等值查询,A3查出记录数为324条,耗时31883毫秒 。
但区间条件时不能再用归并计算交集,集算器将只对其中一个条件使用索引,另一个条件使用遍历计算,效果就会差,比如:
文章插图
代码2.13
代码2.13,查询条件均为区间条件,A3查出记录数为389条,耗时70283毫秒 。
3 索引缓存
组表索引提供了两级缓存机制,可以用index@2或者index@3预先把索引的索引读入内存,如果需要重复多次使用索引查找,则可以有效提高性能 。
推荐阅读
- 网络实用技巧:保护在线账户 谨慎共享信息
- 定制优化Nextcloud镜像
- 微型投影仪选购及保养技巧
- 预防疾病 冬季练习太极拳的五大技巧
- 神回复|神回复:这就是所谓的职场神话技巧,不会说话的你快学起来吧!
- 晾衣服的技巧 晒衣服10个小贴士
- 中考作文提高技巧?中考作文题目技巧_2
- 六安瓜片的冲泡技巧,六安瓜片的味道口感和品茗技巧
- 显卡性能怎么看好坏?独立显卡天梯图2021年3月最新版排行榜
- windows10如何设置能更好的发挥电脑的性能?