请选择
进入手机版
|
继续访问电脑版
学习路径
视频资源
开发者学堂
悬赏
活动
招聘
登录
/
注册
用户名
Email
自动登录
找回密码
密码
登录
立即注册
只需一步,快速开始
搜索
AI搜索
SpreadJS
活字格
Wyn
GcExcel Java
公开课
新手入门
新手训练营
技术认证
好友
帖子
收藏
勋章
设置
我的收藏
退出
首页
›
活字格专区
›
专题教程
›
查看内容
发新帖
Grayson.Shang
超级版主
74
主题
4812
帖子
7948
积分
超级版主
积分
7948
33410
金币
74
主题
4812
帖子
最新发帖
活字格产品周报(2025/11/14)第三百二十五期
活字格产品周报(2025/09/12)第三百一十七期
活字格11.0 update1新功能解密:三十、弹性布局、自由布局也支持拖拽设置了
活字格11.0 update1新功能解密:二十九、程序调用命令增加返回值获取
活字格11.0 update1新功能解密:二十八、组件支持未提交的数据集检查设置
活字格11.0 update1新功能解密:二十七、SQL编辑器支持SQLite和SQL Server智能提示
活字格产品周报(2025/07/18)第三百零九期
活字格产品周报(2025/05/23)第三百零一期
第三方业务系统附件迁移至活字格平台实施方案
活字格产品周报(2025/03/14)第二百九十三期
[性能优化]
干货必读提升性能:五、你真的会用ODATA吗
Grayson.Shang
超级版主
/ 发表于:
2022-10-27 20:45
/
查看:
4281
/ 回复:
0
本帖最后由 Grayson.Shang 于 2022-11-16 18:01 编辑
相信,来这个专题学习的小伙伴们,不是已经使用活字格已经深入骨髓的大佬,要不就是即将使用活字格开发新项目,又很有远见的新一代大佬了。
今天的课程很简单,主要讲的就是ODATA的使用,内容是请谨慎使用ODATA,讲完了~~~
当然不是了,其实关于ODATA使用的道理,大家使用活字格时间长了都懂,但是对这个问题有没有一个比较深刻的印象呢,今天在这个帖子中,就会为大家解密我们ODATA使用不当到底会在使用性能上带来多大的影响,说实话,我之前也没有想到会这么大。
先说说简单对于ODATA性能的查询
1个ODATA,花费时间,慢的时候400ms,快时50ms,这个和查询条件的设置有关
12个ODATA,平均每个ODATA200ms,12个,2s
50个ODATA,平均每个ODATA 50ms,50个,2.5s
表格中ODATA到底会执行多少次
再来看一下我这边使用查询条件筛选了
3行
数据,在
50个字段
的情况下会出现什么样的火花
表格中,除了最后一列是绑定字段ID,其他的数据都是通过ODATA根据ID进行查询的数据,可以看到表格中每一个单元格除了绑定字段ID,都执行了ODATA数据查询。也就是这样的命令会执行150次,是不是很震惊
接下来主要测试的是在表格中使用ODATA的性能,这个为了简单使用的都是简单的ID,比如1~100(
这会导致单次查询时间比较短
)
一个表50个字段,只获取一行数据
这样想一下,当你想要在页面查看主子表关系的时候,若你的主表有100个字段,而这100个字段你都是用0DATA来获取数据的,那么获取这100个字段最快也要50*100ms,也就是5s,要是慢的话,200*100,是20s,但为什么我们平时在使用过程中没有感知到有这么长的时间呢,这个原因主要是因为异步执行,关于异步执行,有兴趣的小伙伴可以度娘。
上面提到的这种情况,在异步请求的情况下我尝试了一下,只有300ms就可以完成,当然不完全准,有时100ms,有时200ms,不过差不多就是几百毫秒级的
一个表50个字段,获取10行,和100行数据
若是你有50个字段,而且在表格中,有10行数据,且都是使用ODATA查询的,在异步的情况下时间是0.35s,这还是在异步的情况下特别是当数量多到一定程度之后,也不可能完全异步,还会分批同步,想要当这样的数据不需要多,只要有100行就会在页面感受到明显的延迟,我这边测试已经有2s钟了。而且这个数据还是我刷新了之后浏览器有缓存了,时间越来越短。
当然上面都是我模拟的场景,真实的场景比这个还要复杂,我这还是根据当前数据表的ID查询当前数据表的字段信息,ID本身就是主键,是有索引的,我们活字格的小伙伴们,的场景可是超级丰富的,通过当前数据表的某一个字段取另一个数据表查询数据,而这个值在那个数据表中还没有索引,像我现在这种100行数据,每行50个字段,2s就可以出来,当时有一个客户,不到40行数据,十几个字段硬是加载了十几秒没出来结果,所以大家应该懂了吧。
最后总结一下ODATA的使用:
1. ODATA很好用,但请不要把他放进表格,在表格中,谁也不清楚数据表会存多少行数据,估计他也不喜欢成群结队,能使用绑定字段就是用绑定字段
2. 页面中出表格的地方可以使用ODATA吗,可以但也要慎用,最好使用有索引的字段作为查询条件,最好是主键,若不是,可以试着增加索引。
3. 外联库ODATA更要谨慎使用,因为ODATA获取数据并不是本身慢,而是容易出现多次请求,外联库请求一次请求上花的时间可能比内联库多(这我猜的)
当然,我们在很多时候不建议使用ODATA,那我想要查询对应的值的话我该怎么用,我这里提供几点我的建议
1. 组合框,加组合框的查询条件,因为组合框只会请求一次后端,就是数据很多,也不会造成性能问题,不过若是访问应用的设备内存比较小,比如PDA,那么此方法禁用,在不多的情况下使用ODATA可能会更好
2. VLOOKUP+表格,这是是在表格中查找数据最好的办法,因为表格请求数据只有一次,而VLOOKUP查询是在当前页面表格上查,不会存在发送http请求的情况,这样性能也会有很大的提升
3. 设置变量命令+设置单元格属性,为什么说这个算是ODATA的上位替代呢,因为页面上公式刷新的时机会受到各种情况的影响,比如页面布局变动,特别是在流失布局中,其实并不需要刷新公式,但是也会刷新,而设置变量命令+设置单元格属性,触发事件是有自己控制的,所以也会提高一些性能
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有帐号?
立即注册
x
收藏
回复
0
个回复
Wyn高级认证
Wyn认证
活字格认证
活字格高级认证
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
发表回复
返回顶部