【性能优化】EKPO/EKBE和LIPS做JOIN的问题
在STO交貨的時候,有時候需要把表EKPO/EKBE和LIPS JOIN起來取數,但是有個問題,EKPO-EBELP是5位數,EKBE-BUZEI是4位數,而LIPS-POSNR是6位數!都不一樣!
直接JOIN的話肯定是錯誤的。平常的做法就是先取一個表,然后用其他方法再取第二個表,但是,這樣做導致程序復雜、性能差、維護難。
講究一點的辦法是借表取數,就是引入第三個表,這個表就相當于催化劑,使得SQL的效率大大提升。
創建一個透明表:
塞進去數據:
然后程序這樣寫:
妥了。
其他的借表取數的例子還有:
SELECT ... FROM EBAN WHERE EBELN =...
換成:
SELECT ... FROM EKET WHERE EBELN =...
SELECT ... FROM EBAN WHERE BANFN = EKET-BANFN...
SELECT ... FROM VBAK WHERE KUNNR = ...
?換成:
SELECT ... FROM VBAKPA WHERE KUNDE = ...
SELECT ... FROM VBAK WHERE VBELN = VBKPA-VBELN...
SELECT ... FROM AFKO WHERE RSNUM = ...
換成:
SELECT ... FROM RESB WHERE RSNUM = ...
SELECT ... FROM AFKO WHERE AUFRN = RESB-AUFNR...
有時候,取數的表雖然多了,但是取數的效率卻大大提升了。
總結
以上是生活随笔為你收集整理的【性能优化】EKPO/EKBE和LIPS做JOIN的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: field module的on inpu
- 下一篇: 批量开物料账期的程序