У меня мало операций объединения на 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