Следующий сценарий очень медленный при его запуске.Как улучшить производительность скрипта sql
Я понятия не имею, как улучшить производительность скрипта. Даже с видом занимает больше, чем довольно много минут. Любая идея, пожалуйста, поделитесь со мной.
SELECT DISTINCT
(id)
FROM (SELECT DISTINCT
ct.id AS id
FROM [Customer].[dbo].[Contact] ct
LEFT JOIN [Customer].[dbo].[Customer_ids] hnci ON ct.id = hnci.contact_id
WHERE hnci.customer_id IN (
SELECT DISTINCT
([Customer_ID])
FROM [Transactions].[dbo].[Transaction_Header]
WHERE actual_transaction_date > '20120218')
UNION
SELECT DISTINCT
contact_id AS id
FROM [Customer].[dbo].[Restaurant_Attendance]
WHERE (created > '2012-02-18 00:00:00.000'
OR modified > '2012-02-18 00:00:00.000'
)
AND ([Fifth_Floor_London] = 1
OR [Fourth_Floor_Leeds] = 1
OR [Second_Floor_Bristol] = 1
)
UNION
SELECT DISTINCT
(ct.id)
FROM [Customer].[dbo].[Contact] ct
INNER JOIN [Customer].[dbo].[Wifinity_Devices] wfd ON ct.wifinity_uniqueID = wfd.[CustomerUniqueID]
AND startconnection > '2012-02-17'
UNION
SELECT DISTINCT
comdt.id AS id
FROM [Customer].[dbo].[Complete_dataset] comdt
LEFT JOIN [Customer].[dbo].[Aggregate_Spend_Counts] agsc ON comdt.id = agsc.contact_id
WHERE agsc.contact_id IS NULL
AND (opt_out_Mail <> 1
OR opt_out_email <> 1
OR opt_out_SMS <> 1
OR opt_out_Mail IS NULL
OR opt_out_email IS NULL
OR opt_out_SMS IS NULL
)
AND (address_1 IS NOT NULL
OR email IS NOT NULL
OR mobile IS NOT NULL
)
UNION
SELECT DISTINCT
(contact_id) AS id
FROM [Customer].[dbo].[VIP_Card_Holders]
WHERE VIP_Card_number IS NOT NULL
) AS tbl
первую очередь избежать подзапрос, если это возможно, то используйте индекс! в любом случае вы выполняете выбор 5. попробуйте один раз, чтобы увидеть, как медленно. используйте план выполнения оценки, чтобы увидеть, где можно оптимизировать ваш запрос. – giammin
У меня есть индексные ключи. Если сценарий выше можно сделать быстрее, это было бы здорово. пока сценарий дает очень низкую производительность. – Tun
Вам не нужно DISTINCT, когда UNION, все дубликаты уже удалены. – jarlh