With KEY & With Table KEY 的使用

 在做闡述之前,我覺得有必要了解一下KEY。

ABAP的內表和我們真正的DB 表是類似的,有結構有欄位,但是在處理Key上DB表顯得更為隨意,可以要也可以不要,
而內表如果沒有顯式聲明,會將內表中的所有非數值欄位的欄位都作為KEY,當然也可以顯式聲明KEY。
    With- 這種結構用的地方主要就是在內表的處理上,包括DELETE,READ.
READ 可以用WITH KEY 或者WITH TABLE KEY,但是DELETE只能用WITH TABLE KEY
語法結構如下:
1.
DELETE / READ itab - table_key
Syntax
... { WITH TABLE KEY {comp_name1|(name1)} = dobj1
                     {comp_name2|(name2)} = dobj2
                     ...                           } ... .
2.
READ – table free key
Syntax
READ TABLE itab { { WITH KEY dobj }
                | { WITH KEY = dobj [BINARY SEARCH] } } RESULT

那么我們真正關注的是內表的訪問效率問題。訪問表可以用WITH KEY 或WITH KEY - BINARY SEARCH
或 WITH TABLE KEY,那么各種語法的效率如何?
    分析這個問題,我們必須了解一下表的訪問方式有那些。目前內表的訪問,主要有Index、Binary Search(二元法)、
線性、Hash算法等。
    內表的訪問和內表的類型有直接的關係,具體情況如下:
Standard Table:線性訪問
Sorted Table  :Binary Search
Hashed Table :Hash算法
說了那么多,此篇的重點就是要講,我們在使用Standard Table時,如果用訪問表,使用With Key或With Table Key的效率
都會比 With key --- Binary Search 差,因為前面兩個都是采用線性方式,With Table key 很多人會理解成DB的INDEX訪問,
那么在理解內表的時候就要稍微變通一下。如果使用的是Sorted table 則默認使用Binary Search,你也可以在語法中
加Binary Search 但是加不加都是一樣的效果。
    最後還有一些疑問沒有找到原因:
     1. With table key 為什么不可以使用 binary search
     2. with table key 和 with key的區別是否就是前者要求的唯一性
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值