У меня есть около 1,60,000 строк, полученных за 4 минуты, если я использую следующее.Ошибка производительности запросов SQL Server
SELECT DISTINCT *
FROM
(ABOUT 10 TABLES WITH LEFT OUTER JOIN)
Но мне нужно извлечь только около 25 столбцов с некоторыми основными операциями на них. Но мой нижний запрос длится бесконечно (более часа).
Col1, Col2 и т. Д., ColA, ColB и т. Д. Представляют столбцы. Также мне нужно иметь DISTINCT, потому что это последняя версия, которая мне нужна.
SELECT DISTINCT
Col1, Col2,...Col23,
Table1.Description1 + Table1.Description2 as FinalDescription,
(CASE WHEN COLA = 'XX' THEN
cast(round(COLB,2) as numeric(10,2))
ELSE
cast(round(COLB*-1 ,2) as numeric(10,2))
END) AS 'Amount',
CASE WHEN ISNULL(COLC,'')=''
THEN COLD + 'TO' + COLE
WHEN SUBSTRING (COLC ,1 , 3)IN ('XY')
THEN COLD+','+ SUBSTRING (COLE ,5 , 12)
ELSE COLD + ','+ COLF
END as 'Custom_Column'
FROM
(ABOUT 10 TABLES WITH LEFT OUTER JOIN)
Что мне делать, чтобы улучшить производительность, чтобы получить столбцы в интересующем нас формате?
Во-первых: сравните планы запросов (CTRL-L). Во-вторых: выясните, почему вам нужны разные. У вас неправильное соединение? –
У меня нет внутренних объединений. Требуется различие, поскольку таблицы неправильно разработаны и дублируются. Вот как это устроено. Невозможно изменить настройку. Также у вас нет разрешения на просмотр плана запроса. –
Запустите запрос с удаленным столбцом «Сумма», а затем запустите его снова с удаленным Custom_Coulmn. Вы узнаете, что проблематично. – Adish