Проблема производительности с этим оператором SQL - PullRequest
0 голосов
/ 27 мая 2018

Я построил оператор SQL, который дает правильные результаты, но производительность является реальной проблемой.Любые предложения, как улучшить его, будет принята с благодарностью.

SELECT 
    c~GROUP, c~CONTI, c~REGION, c~AREA, c~CNTRY,
    a~COMPANY, b~MATTYPE, a~CALMONTH, a~LOC_CURRCY, a~BASE_UOM,
    SUM(ZVALSTCKV) AS amount,
    SUM(ZVALSTCKQ) AS quantity
INTO 
    TABLE @data_raw1
FROM 
    AD3IM AS a
INNER JOIN 
    PMATERIAL AS b ON a~MATERIAL = b~MATERIAL
INNER JOIN 
    PCOMPANY AS c ON a~COMPANY = c~COMPANY
WHERE
    a~COMPANY IN @rangettable_COMPANY AND
    CALMONTH IN @rangetable_CALMONTH  AND
    (b~MATTYPE = @constant_O OR b~MATTYPE = @constant_T) AND
    b~OBJVERS = 'A' AND
    c~OBJVERS = 'A'
GROUP BY 
    a~COMPANY, b~MATTYPE, a~CALMONTH, a~LOC_CURRCY, a~BASE_UOM,
    c~GROUP, c~CONTI, c~REGION, c~AREA, c~CNTRY 

AD3IM имеет около 2,8 млн. Записей и в качестве первичного ключа:

COMPANY
SITECD
MATTYPE
CMATERIAL
CALMONTH
LOC_CURRCY
BASE_UOM

, дальнейшие индексы отсутствуют.

PMATERIAL - это около 254 000 записей, а в качестве основногоключ:

CMATERIAL
OBJVERS

и дальнейшие индексы отсутствуют.

PCOMPANY содержит около 14.000 записей, а в качестве первичного ключа:

COMPANY
OBJVERS

и дальнейшие индексы отсутствуют.

Будучи новичком в SQL, я ценю любую помощь, которую вы можете предложить.Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...