With KEY & With Table KEY 的使用
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
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的區別是否就是前者要求的唯一性
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/554557/viewspace-594969/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- el-table 的 el-table-column 的key使用Math.random() 篩選列random
- keyup,keypress,keydown事件的區別事件
- MGETkey[key…]
- 如何在TortoiseGit中使用ssh-keygen生成的keyGit
- Github deploy key使用Github
- Flutter Key的原理和使用(三) LocalKey的三種型別Flutter型別
- iOS keyValue方法的使用iOS
- keycloak~RequiredActionProvider的使用UIIDE
- js keyup、keypress和keydown事件JS事件
- MyIsam 表 “ Incorrect key file for table 't_ '; try to repair it”AI
- ALTER TABLE causes auto_increment resulting key 'PRIMARY'REM
- partition table update partition-key result in changing tablespace
- Key-preserved table concept in join view (Ask Tom)View
- Flashback table with foreign key constraint.AI
- Incorrect key file for table '/tmp/....'錯誤的解決--記錄
- js的事件屬性altKey,ctrlKey,shiftKey介紹JS事件
- SSH key使用總結
- SSKeyChains的使用小節AI
- keycloak~Consent Required的使用UI
- Flutter Key的原理和使用 (一) 沒有Key會發生什麼Flutter
- mysql中key 、primary key 、unique key 與index區別MySqlIndex
- 今天測試了一下update partition table的part key
- Redis熱點key大keyRedis
- onkeyup和onkeydown事件的區別事件
- [翻譯]使用 ICS KeyChain API(Using the ICS KeyChain API)AIAPI
- vue v-for中key的作用,使用index作為key會怎麼樣?VueIndex
- 對setObject:forKey:與setObject:forKeyedSubscript:的理解Object
- spark RDD,reduceByKey vs groupByKeySpark
- valueforkey和objectforkey區別Object
- Redis 中 Keys 與 Scan 的使用Redis
- Monkey框架使用指南框架
- 工作294:for[item.key]使用
- 使用索引優化StopKey索引優化TopK
- element-plus table部分列根據介面返回key展示
- keycloak~網站對接到Keycloak的步驟網站
- keystone系列一:keystone基礎
- monkeyscript - 定製化monkey流程
- SORT (UNIQUE STOPKEY)/ SORT GROUP BY STOPKEYTopK