iT邦幫忙

0

ERP [ 偷懶 ] 是 原廠的專利... 不試試 Oracle EBS / SAP ECC 哪知真假 ? (2)

  • 分享至 

  • xImage

SELECT COUNT(*)
FROM BOM_BILL_OF_MATERIALS BOM /* NEEDED TO GET ORG_ID */ ,
BOM_INVENTORY_COMPONENTS BIC ,
MTL_SYSTEM_ITEMS_B_KFV MSI ,
MTL_SYSTEM_ITEMS_TL MSIT ,
FND_COMMON_LOOKUPS FCL ,
MFG_LOOKUPS ML ,
MFG_LOOKUPS ML1
WHERE BIC.BILL_SEQUENCE_ID = BOM.BILL_SEQUENCE_ID
AND BIC.COMPONENT_ITEM_ID = MSI.INVENTORY_ITEM_ID
AND BOM.ORGANIZATION_ID = MSI.ORGANIZATION_ID
AND MSI.INVENTORY_ITEM_ID = MSIT.INVENTORY_ITEM_ID
AND MSI.ORGANIZATION_ID = MSIT.ORGANIZATION_ID
AND MSIT.LANGUAGE = USERENV('LANG')
AND ML.LOOKUP_CODE(+) = BIC.WIP_SUPPLY_TYPE
AND ML.LOOKUP_TYPE(+) = 'WIP_SUPPLY'
AND ML1.LOOKUP_TYPE(+) = 'BOM_ENFORCE_INT_REQUIREMENTS'
AND ML1.LOOKUP_CODE(+) = BIC.ENFORCE_INT_REQUIREMENTS
AND FCL.LOOKUP_TYPE(+) = 'ITEM_TYPE'
AND FCL.LOOKUP_CODE(+) = MSI.ITEM_TYPE
AND FCL.APPLICATION_ID(+) = 401
AND NVL(BIC.ECO_FOR_PRODUCTION,2) = 2

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

4
charmmih
iT邦研究生 5 級 ‧ 2012-05-14 09:43:39

albertachen提到:
SELECT COUNT(*)
FROM BOM_BILL_OF_MATERIALS BOM /* NEEDED TO GET ORG_ID */ , .....

應改成, SELECT COUNT(BOM.BILL_SEQUENCE_ID )
主表格有值欄位找一個就好了, 要那麼多欄位會操死DB

賽門 iT邦超人 1 級 ‧ 2012-05-14 12:14:14 檢舉

這個答案一定要推...這麼有資料庫概念的Coding, 在當今程式設計師界已經非常少見了!

charmmih iT邦研究生 5 級 ‧ 2012-05-19 09:46:01 檢舉

多謝賽大的推推.....

  1. 其實這個答案還有一個一不錯的解決是,
    select count(*) ==> select count(1)
    任一欄位就算有值, 和只要有資料就算有值, 是相等意義的...

  2. 我比較喜歡當幫助程式設計師調校SQL的DBA, 進入我管的資料庫的SQL指令要快進快出, CPU,IO,RAM會大幅下降, 只是當系統沒事的時候, 我就被看似沒價值了, 就是被隱藏的時候了...

  3. 現在積極想轉型為解決既有資訊系統疑難雜症的顧問, 及多學點報表設計在大量資料快速撈取展現了我的優勢啦~~

charmmih iT邦研究生 5 級 ‧ 2012-07-13 13:49:03 檢舉

albertachen提到:
AND NVL(BIC.ECO_FOR_PRODUCTION,2) = 2

  1. 欄位運算是效能大忌....
    AND (BIC.ECO_FOR_PRODUCTION=2 or BIC.ECO_FOR_PRODUCTION is null )

  2. 再者是查看相關表格, 相關選擇性高欄位(通常是主鍵欄位)是否建索引...

一般光由SQL來看那個欄位選擇性高是很難,
通常找出前100筆資料, 就可查出那幾個欄位的選擇性高.....

我要發表回答

立即登入回答