SELECT透明表时,当符合WHERE语句有多条记录,每条记录又要拿出来处理,一般有两种方式。
1.SELECT~INTO到结构体或者字段中,然后处理结构体中栏位信息,后面要加ENDSELECT.
如果这么写程式,会怎么样呢?随着数据量的增加,有可能宕掉。
原因是因为在SELECT~ENDSELECT这个过程中,SELECT每一笔数据都需要跟数据库透明表保持连接, 如果很多笔数据都跟数据库保持的这种连接,会导致数据库端因为连接超时而断开。
2.那LOOP~ENDLOOP这种方式,通过SELECT INTO到内表中,相当于一次性从透明表中把数据取出来,接下来LOOP内表中的数据,不需要持续跟数据库连接,可以减少搜索数据的时间。我们在LOOP以前可以用SORT对标准表按KEY值进行排序(内表没有特殊指明表类型,就是标准表)。
但是这种方式,不是一点缺陷都没有的,会牺牲存储空间,与SELECT~ENDSELECT相比,换取性能和时间上的优势。
总的来说,为了系统的稳定起见,建议使用LOOP~ENDLOOP 的方式。