05/11 SQL撈資料如何提高效率?

  • 131
  • 0
  • SQL
  • 2017-05-18

方法二比方法一來得好唷~~!!!

版版貼心提醒..
 

 

方法一 

          SELECT
                               [MPRODUCT_ID]
                               ,[MPRODUCT_NAME]
                               ,[MPRODUCT_CONTENT]
                               ,[MPRODUCT_PRICE]
                               ,DBO.UFU_GETMSALE_STOCK(MPRODUCT_ID, NULL) AS MPRODUCT_STOCK
                               ,[MPRODUCT_PHOTO]
                               ,[MPRODUCT_CATE]
                               ,[MPRODUCT_STATUS]
                            FROM [KSISALDB].[DBO].[MPRODUCT]
                            WHERE [MPRODUCT_CATE] = 1
                            AND [MPRODUCT_STATUS] ='00'
                            AND CONVERT(INT,DBO.UFU_GETMSALE_STOCK(MPRODUCT_ID, NULL))  >0

可以看到第六行被呼叫的預存程序,

有個MPRODUCT_STOCK名稱欄位

現在要從[DBO].[MPRODUCT]裡面的資料表

篩選出[MPRODUCT_STATUS] ='00'   (商品狀態為00)

及MPRODUCT_STOCK > 0  (庫存量大於零的)

以上做法是使用CONVER

將預存程序轉成INT 數值 

去比較大於零的庫存數量

這樣的作法效率較為差

 

方法二 ★★ <=重點打星星喔~!

SELECT
    M.MPRODUCT_ID
   ,M.MPRODUCT_NAME
   ,M.MPRODUCT_CONTENT
   ,M.MPRODUCT_PRICE
   ,S.MPRODUCT_STOCK
   ,M.MPRODUCT_PHOTO
   ,M.MPRODUCT_CATE
   ,M.MPRODUCT_STATUS
FROM MPRODUCT M
LEFT JOIN (SELECT
        MPRODUCT_ID
       ,DBO.UFU_GETMSALE_STOCK(MPRODUCT_ID, NULL) AS MPRODUCT_STOCK
    FROM MPRODUCT) S
    ON S.MPRODUCT_ID = M.MPRODUCT_ID
WHERE M.MPRODUCT_CATE = 2
AND M.MPRODUCT_STATUS = '00'
AND S.MPRODUCT_STOCK > 0

是直接從預存程序的

資料表撈出MPRODUCT_STOCK

這樣可以更有效率開取這網頁

不用再轉換INT的步驟
 

P.S

今天學到很棒的SQL指令

謝謝指導員耐心的教導

前端工程師雖然要著重網頁美化

但也要了解介接的流程

以及更有效率的撈資料方式唷~!