0
点赞
收藏
分享

微信扫一扫

改进YOLOv5:自研网络新结构,可作为创新点 | ALFNet YOLO | 创新必备

炽凤亮尧 2023-05-05 阅读 84

在这里插入图片描述

目录


前言

在这里插入图片描述


数据库表准备


在这里插入图片描述

  本文所有案例都是基于一个我自己创建的Z表,该表结构如上图所示,供各位小伙伴们对照来观察代码运行结果:


(一)ABAP SQL新老语法如何选择?


在这里插入图片描述
  关于ABAP SQL新语法的介绍将在本系列的最后进行介绍,这里只列举ABAP SQL新语法最基础的应用:

以下是ABAP SQL新语法的一般语法样式:

SELECT ... 
FROM  table_name
INTO @DATA(lt_name)
WHERE ...
LOOP AT lt_name INTO DATA(ls_name)
...
ENDLOOP.

 新老语法性能分析

  下面给出一个详细的案例来对比使用ABAP SQL新语法前后语句性能的变化

  老语法示例代码

FORM form_01 .
  DATA:gt_student TYPE TABLE OF zstudent_wyz,
       gs_student TYPE zstudent_wyz.
  SELECT zschool zcode INTO CORRESPONDING FIELDS OF TABLE gt_student
  FROM ZSTUDENT_WYZ .
  LOOP AT gt_student INTO gs_student.
    WRITE: / gs_student-zschool,gs_student-zcode.
  ENDLOOP.
ENDFORM.

START-OF-SELECTION.
  PERFORM form_01.

1000条目数语句性能
10000条目数语句性能

  新语法示例代码

FORM form_01 .
  SELECT carrid,connid,fldate INTO TABLE @DATA(gt_sflight)
  FROM sflight .
  LOOP AT gt_sflight INTO DATA(gs_sflight).
    WRITE: / gs_sflight-carrid,gs_sflight-connid,gs_sflight-fldate.
  ENDLOOP.
ENDFORM.

START-OF-SELECTION.
  PERFORM form_01.

1000条目数语句性能

10000条目数语句性能

 分析总结

  可以看到ABAP SQL新语法在处理大量数据的时候SQL语句花费的时间要比老语法小很多。因此,新语法在处理大批量数据的时候性能会更加优越,并且语法更加简洁,是我们每一个ABAPer都需要学会并且掌握的!

  综上所述:ABAP SQL新老语法我们都需要学会并且掌握,并且熟练运用ABAP SQL新语法后会在工作中更加如鱼得水!


(二)尽量少地使用 SELECT * 语句


在这里插入图片描述

  关于这部分内容的讲解,在上一篇文章「SAP ABAP」OPEN SQL(九)【SAT事务码】的结尾进行了详细的介绍,大家可以去看看哦!这里我就直接把结论放出来!


(三)海量数据处理中避免使用SELECT…ENDSELECT语句


在这里插入图片描述

  ABAP中支持一种SELECT...ENDSELECT的结构,就是可以在SELECT中对取得的每一行数据(或是几个字段)可以先放入一个行结构(或是几个字段)中,再做处理。

  初看似乎觉得蛮有用的,的确这个结构本身就是为了方便处理数据的。但是,如果你滥用了这种结构,那么会严重影响程序性能。因为数据量大了之后,在SELECT和END SELECT之间做处理的时间会很长,从而导致数据库端因为连接超时而断开

  所以,在大数据量处理的报表中,不能用SELECT…END SELECT这种写法。


(四)尽量少使用子查询语句


在这里插入图片描述

  对于ABAP来说,不推荐使用子查询语句,一旦数据量过大效率就很难保证!执行子查询时,会先创建临时表,查询完毕后再删除这些临时表,所以,子查询的速度会受到一定的影响,这里多了一个创建和销毁临时表的过程。


(五)多用SELECT SINGLE语句和UP TO 1 ROWS语句


在这里插入图片描述

  如果确定只需要查找一条数据时,建议使用SELECT SINGLE...。除此之外还可使用ORDER BY配合UP TO 1 ROWS ...来查找某一字段值的最大值,这样子性能开销会更小!

  下面将进行一个详细的案例讲解,帮助各位小伙伴们进行对比观察使用SELECT SINGLE前后的语句性能开销:

 不使用SELECT SINGLE语句

FORM form_01 .
  SELECT carrid,connid,fldate INTO TABLE @DATA(gt_sflight)
    FROM sflight
    WHERE carrid = 'AC' AND
          connid = 0820 AND
          fldate = '20020218'.
  LOOP AT gt_sflight INTO DATA(gs_sflight).
    WRITE: / gs_sflight-carrid,gs_sflight-connid,gs_sflight-fldate.
  ENDLOOP.
ENDFORM.

START-OF-SELECTION.
  PERFORM form_01.

 使用SELECT SINGLE语句

FORM form_01 .
  SELECT SINGLE carrid,connid,fldate INTO @data(gs_sflight)
    FROM sflight
    WHERE carrid = 'AC' AND
          connid = 0820 AND
          fldate = '20020218'.
  WRITE: / gs_sflight-carrid,gs_sflight-connid,gs_sflight-fldate.
ENDFORM.

START-OF-SELECTION.
  PERFORM form_01.

在这里插入图片描述

 性能分析对比

  在做了多轮试验后,确实证明使用SELECT SINGLE语句效率会更高!


写在最后的话

  本文花费大量时间介绍了ABAP SQL性能优化第一篇,希望能帮助到各位小伙伴,码文不易,还望各位大佬们多多支持哦,你们的支持是我最大的动力!

在这里插入图片描述

举报

相关推荐

0 条评论