首先作为我们开发过程中必不可少的命令For Each 有着无与伦比的重要性 但是我们从Wiki上得知 我们用到的可能只是它一丢丢的能力并没有全部使用出来。
       所以 这篇文档将记录这个命令的各种用处 方便自己     WiKi的链接为:https://wiki.genexus.com/commwiki/servlet/wiki?24744,For%20Each%20command  需要的话可以尝试去看一下。
第一个命令就是For each <Transaction>  这就不用说了 查询某些表数据集的语句
第二个命令就是For each order <Attribute> 这个我们也经常用 根据指定的值来排序 如果加括号即为倒序 反之亦然 然后还有一个 For each order none 此命令用于在执行查询过程中不做排序
第三个命令就是For each using <DataSelector> 这个我们很少用到 首先要说的是DataSelector是我们GeneXus中的一个对象 中文名称叫做数据选择器,我们如果细心点的话,在我们写一个Grid页面的同时会发现GeneXux会自动帮我生成一个这样的玩意儿↓

当我们仔细看这些东西的时候 会发现这其实就是页面上的各种筛选条件 我们一时半会也不知道写这么多东西分别代表什么 但是大体知道这个对象是做什么事的就行了 回到原题当我们使用
For each using <DataSelector> 并且指定一个此类对象的时候那么 换言之我们其实就是把这些筛选条件集合到一起筛选条件就是这个DataSelector 用来简化代码 ,这样说可能不是很清楚那么我换一种图片方式我们还是使用自己的KB随便拉一个Grid的页面并且使用Sdt来填充数据 同时追加一些筛选条件我们没有使用DataSelector的时候是这样的↓

调用方法并传入查询条件

然后根据对应传进来的参数执行查询操作

这就是我们正常情况下的筛选操作  这里我没有提Grid中使用Condition的筛选是因为这两者不好做比较 。当我们使用DataSelector来做这些筛选功能的时候就会变成这样↓
我们新建一个DataSelector 然后模仿GeneXus自己生成方式来写就会变成这样

这样我们 就可以调用了  他的调用方式也简单

其实没什么本质上的不同 而且这两种方式是可以共存的唯一的区别就在于在这两种情况并存的情况下 For each 的Order具有较高的优先级,其他筛选条件则没有。
第四个命令为For each <unique > 这个用的频率还算比较高 指定属性在筛选过程中对于在数据集中重复的数据予以过滤 。
第五个命令为For each <Blocking> 这个命令估计只适用于比较大型的项目了 他的官方文档为https://wiki.genexus.com/commwiki/servlet/wiki?5572,Category%3ABlocking+Data+Updates,
从文档上来看这属于一种批量处理方式,举个栗子:现阶段一个项目中 某条语句可能要对数据库中的10000条语句发生变更操作 这样的话我们客户端可能就要和数据库交互10000次的往返操作,鉴于此种情形 我们本地做10000条假数据来测试,
写简单点我们 将这10000条记录的CustomeNum变为1 并观察他的运行时间

Log日志如下:

貌似有点太短了,同条件下我们把数据量加大一点好了(´・ω・)ノ(._.`) 65万条  再试一下

这。。。算了 不加了 可能我这里是本地数据库的原因所以才这么快吧。
我们再试试使用Blocking命令执行

结果时间花的更久了。。。。。。

这个问题先记下 反正wiki上是这么说的 用途也是这样的 应该有什么我没注意到的地方  嗯没了 下次再来完善下好了

关于GeneXus中的ForeachCommand命令的更多相关文章

  1. linux shell 中的sleep命令

    开始还以为是这样的语法: sleep(1), 后面发现是: linux shell 中的sleep命令 分类: LINUX 在有的shell(比如linux中的bash)中sleep还支持睡眠(分,小 ...

  2. 在脚本中使用sudo命令,将密码保存在脚本中,不需要手动输入密码

    在脚本中使用sudo命令,将密码保存在脚本中,不需要手动输入密码. #!/bin/bash echo 'xxx密码xxx'|sudo -S service mysql start echo 'xxx密 ...

  3. 在程序中执行shell命令

    在linux系统下的操作中我们会经常用到shell命令来进行,一开始学习进程的时候对于shell命令也进行了思考,认为shell命令就是一个进程的外壳,经过了后来的学习对于这一点也有了更多的认识. 用 ...

  4. 常见linux命令释义(第九天)—— Bash Shell 的操作环境Shell 中的管道命令一些管道命令

    最近好懒好懒.连写文章都写不好了.于是只能写读一点书,记一点读书笔记了.太懒了,没办法.慢慢恢复自己的状态吧. 管道命令仅会处理strandard output 的内容,对于strandard err ...

  5. Linux中的历史命令

    Linux中的历史命令一般保存在用户    /root/.bash_history history 选项 历史命令保存文件夹 选项     -c:清空历史命令     -w :把缓存中的历史命令写入历 ...

  6. Google Chrome浏览器中如何使用命令

    Google Chrome浏览器中如何使用命令 | 浏览:2974 | 更新:2014-02-23 23:12 | 标签:chrome 1 2 3 分步阅读 Google Chrome浏览器有很多的特 ...

  7. QT中QProcess调用命令行的痛苦经历

    在QT程序中需要将某些目录和文件压缩为一个rar的压缩包,于是想到了在QT中通过QProcess类调用命令行的rar.exe来达到效果,但是没想到QProcess类用起来很麻烦,而且达不到效果,折腾了 ...

  8. 批处理中的echo命令图文详解

    批处理中的echo命令图文详解 1. Echo 显示当前ECHO的状态:ECHO ON 或者ECHO OFF 2. ECHO ON 将ECHO状态设置为ON,将显示命令行,也就是前面的C:\>类 ...

  9. RedHat中敲sh-copy-id命令报错:-bash: ssh-copy-id: command not found

    RedHat中敲sh-copy-id命令报错:-bash: ssh-copy-id: command not found 在多台Linux服务器SSH相互访问无需密码, 其中进入一台Linus中,对其 ...

随机推荐

  1. 5.Docker存储卷

    一.概述 1.Docker底层存储机制 Docker镜像由多个只读层叠加而成,启动容器时,Docker会加载只读镜像层并在镜像栈顶部添加一个读写层. 如果运行中的容器修改了现有的一个已经存在的文件,那 ...

  2. ORM多表查询下

    一.多表查询 1.基于双下划线的跨表查询 Django 还提供了一种直观而高效的方式在查询(lookups)中表示关联关系,它能自动确认 SQL JOIN 联系.要做跨关系查询,就使用两个下划线来链接 ...

  3. HAProxy+Heartbeat双节点出现VIP情况

    本文使用heartbeat做高可用,主节点192.168.0.204,备节点192.168.0.205,vip192.168.0.206,防火墙启动状态 先启动主节点,再启动备节点后,发现以下问题: ...

  4. linux运维、架构之路-linux磁盘管理

    一.企业中磁盘选购: 1.线上的业务,用SAS磁盘 2.线下的业务,用SATA磁盘,磁带库 3.线上高并发.小容量(多人浏览力图片)的业务,SSD磁盘 4.根据数据的访问热度,智能分析分层存储,SAT ...

  5. OC + RAC (四) combineLatest和merg

    -(void)_test4{ ///RAC combineLatest和merge // combineLatest只有当两个信号都发送了 订阅者才能收到信息 结果一次收到 结果是数组 // merg ...

  6. spring boot 开静态资源访问,配置视图解析器

    配置视图解析器spring.mvc.view.prefix=/pages/spring.mvc.view.suffiix= spring boot 开静态资源访问application.proerti ...

  7. [CSP-S模拟测试]:建设城市(city)(组合数学+容斥)

    题目传送门(内部题8) 输入格式 一行三个整数$n,m,k$. 输出格式 一行一个整数表示答案.对$998244353$取模. 样例 样例输入 3 7 3 样例输出 数据范围与提示 对于10%的数据, ...

  8. 代码片段快捷键 CodeSnippets

    CodeSnippets https://github.com/jaydee3/CodeSnippets These are my Xcode 4 CodeSnippets. To use them, ...

  9. SpringMVC-设计模式

    MVC 设计不仅限于 Java Web 应用,还包括许多应用,比如前端.PHP..NET 等语言.之所以那么做的根本原因在于解耦各个模块. MVC 是 Model.View 和 Controller ...

  10. inline-block的间隙问题 box-orient属性 line-clamp属性 margin问题

    只要设了 display:inline-block 将元素变成行级块元素的时候,会自带空隙,即使你设了 margin 和 padding 依然没有效果! 解决办法:只要在父元素上加上font-size ...