Microsoft SQL Server: объедините 11 миллионов повторяющихся проблем без использования группы - PullRequest
0 голосов
/ 11 мая 2019

У меня мало операций объединения на Microsoft SQL Server, основная таблица, которая находится в первом выборе, имеет 600 тыс. Записей, но объединения вставляют 11 миллионов записей в базу данных, которая является излишней. Я проверил другие сообщения, но все еще не мог понять, как настроить правильный запрос, я немного новичок в этом.

Я пробовал группировать по id для каждой таблицы, также пытался делать то же самое в python, но мысль могла дать какую-то разницу.

DECLARE @maxVal BIGINT

SELECT @maxVal = ISNULL(MAX(general_id), 1) 
FROM dbo.Sales_SS

DECLARE @Sales AS TABLE 
                  (
                      general_id BIGINT, 
                      debit_acc NVARCHAR(MAX), 
                      credit_acc NVARCHAR(MAX), 
                      date DATETIME, 
                      doc_id BIGINT, 
                      prod_id BIGINT, 
                      p_id BIGINT,
                      amount FLOAT, 
                      price FLOAT,
                      self_cost FLOAT, 
                      product_id BIGINT, 
                      code NVARCHAR(MAX), 
                      name NVARCHAR(MAX)
                 )

INSERT INTO @Sales 
    SELECT * 
    FROM 
        (SELECT general_id, debit_acc, credit_acc FROM doc.Entries) e
    LEFT JOIN 
        (SELECT tdate as date, id as doc_id FROM doc.GeneralDocs) docs ON docs.doc_id = e.general_id AND docs.doc_id > @maxVal
    LEFT JOIN 
        (SELECT 
             general_id as prod_id, product_id as p_id, amount, price, self_cost 
         FROM
             doc.ProductsFlow) prods ON prods.prod_id = e.general_id AND prods.prod_id > @maxVal
    LEFT JOIN 
        (SELECT id as product_id, code, name FROM book.Products) codes ON codes.product_id = prods.p_id
    WHERE
        debit_acc = '7210' 
        AND credit_acc = '1610' 
        AND general_id > @maxVal 
    ORDER BY 
        e.general_id ASC

INSERT INTO dbo.Sales_SS(general_id, date, amount, price, cost, product_id, code, name)
    SELECT general_id, date, amount, price, self_cost, product_id, code, name 
    FROM @Sales

1 Ответ

0 голосов
/ 13 мая 2019

ВЫБЕРИТЕ ЗНАЧЕНИЕ general_id решил все

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