首先作为我们开发过程中必不可少的命令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. 线程数设置和CPU数的关系

    一般说来,大家认为线程池的大小经验值应该这样设置:(其中N为CPU的个数) 如果是CPU密集型应用,则线程池大小设置为N+1 如果是IO密集型应用,则线程池大小设置为2N+1(因为io读数据或者缓存的 ...

  2. css 响应式(媒介查询)

    1.CSS 来实现响应式 CSS实现响应式网站的布局要用到的就是CSS中的媒体查询接下来来简单介绍一下: @media 类型 and (条件1) and (条件二){css样式} <link r ...

  3. Python操作cx_Oracle笔记

    参考文章: http://cx-oracle.readthedocs.io/en/latest/cursor.html # 创建数据库连接 ordb = Oracle.connect("{0 ...

  4. Oracle12c修改时区

    Oacle12c支持可插入数据库(PDB)在一个统一的数据库(CDB)中具有不同的字符集.时区文件版本和数据库时区. 出于性能原因,Oracle建议将数据库时区设置为UTC(0:00),因为不需要转换 ...

  5. Eclipse使用maven创建SSM-web项目

    1.环境准备 (1)maven:apache-maven-3.5.2,我的maven安装在D:\apache-maven-3.5.2,eclipse中maven配置如下: 先add ,添加好自己的ma ...

  6. python 生成多维数组

    在刷题时用到了数组,因为不提供三方库所以不能使用Numpy.想如何通过python列表模拟数组. 第一种方法 """ 生成n*m的初始值为0的矩阵 "" ...

  7. WORD 图片能粘到百度编辑器吗

    在之前在工作中遇到在富文本编辑器中粘贴图片不能展示的问题,于是各种网上扒拉,终于找到解决方案,在这里感谢一下知乎中众大神以及TheViper. 通过知乎提供的思路找到粘贴的原理,通过TheViper找 ...

  8. 禁止input输入框输入指定内容

    链接: http://blog.csdn.net/xiaoya_syt/article/details/52746598

  9. linux文件软链接操作

    cd /etc/alternatives ll php* lrwxrwxrwx 1 root root 15 Oct 23 15:24 php -> /usr/bin/php7.3* lrwxr ...

  10. 如何安全修改cocoapods上的第三方代码

    其实搞java的都知道maven管理,解决第三方代码修改的办法就是架一个服务器,把这些修改的库放在这里,然后再maven里配置哪些需要用本地仓库的.其实cocoapods也可以做本地包管理: 大致方法 ...