簡體   English   中英

MS Access 2010 SQL按組性能的前N個查詢

[英]MS Access 2010 SQL Top N query by group performance issue

我有2個表,一個表用於衡量項目(MASE_Table),另一個表用於衡量項目屬性(SKU)。 項目屬性可以是Planner或ABCByPick或XYZ或其他屬性。

通過查詢,我想通過屬性ABCByPick獲取此度量的前10個項目(AvgOfScaledError)。

我想使查詢盡可能通用,以便可以復制查詢並用屬性計划器替換ABCByPick

我在這里嘗試了一些技巧。 只要MASE_Table中的記錄數少於1000,我就可以執行查詢。 如果我想使用MASE_Table中的8000條記錄來運行它,查詢將不再產生結果(沒有錯誤消息,但是超時)。

這是我查詢ABCByPick的前10名:

SELECT s2.ABCByPick
       ,m2.DmdUnit
       ,ROUND(m2.AvgOfScaledError, 2) AS MASE
    FROM MASE_Table AS m2
    INNER JOIN SKU AS s2
        ON ( m2.Loc = s2.Loc )
           AND ( m2.DmdUnit = s2.Item )
    WHERE m2.AvgOfScaledError IN ( SELECT TOP 10 m1.AvgOfScaledError
                                    FROM (
                                           SELECT m1.Loc
                                               ,m1.DmdUnit
                                               ,s1.ABCByPick
                                               ,m1.AvgOfScaledError
                                            FROM MASE_Table AS m1
                                            INNER JOIN SKU AS s1
                                                ON m1.Loc = s1.Loc
                                                   AND m1.DmdUnit = s1.Item
                                         )
                                    WHERE s1.ABCByPick = s2.ABCByPick
                                    ORDER BY m1.AvgOfScaledError DESC )
    ORDER BY s2.ABCByPick
       ,m2.AvgOfScaledError DESC;

MASE_Table上的主鍵是Loc和DmdUnit
SKU上的主鍵是Loc和Item

這應該可以幫助一些:

SELECT s2.ABCByPick,
    m2.DmdUnit,
    ROUND(m2.AvgOfScaledError, 2) AS MASE
FROM MASE_Table AS m2
INNER JOIN SKU AS s2 ON m2.Loc = s2.Loc
    AND m2.DmdUnit = s2.Item
WHERE m2.AvgOfScaledError IN (
        SELECT TOP 10 m1.AvgOfScaledError
        FROM MASE_Table AS m1
        INNER JOIN SKU AS s1 ON m1.Loc = s1.Loc
            AND m1.DmdUnit = s1.Item
        WHERE s1.ABCByPick = s2.ABCByPick
        ORDER BY m1.AvgOfScaledError DESC
        )
ORDER BY s2.ABCByPick,
    m2.AvgOfScaledError DESC;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM