Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Оптимизировать запрос  [new]
2viper2viper
Member

Откуда:
Сообщений: 271
Вопрос в том, что данный запрос выполняется относительно долго
можно ли ускорить выполнение?
по задаче, нужно заменить null-значения полей разного типа данных символами "--"

			 select Дог as 'Договор'
			,isnull(substring(k.act,31,20),'--') as 'Акт'
			,isnull(convert(nvarchar(8),k.DateAct,4),'--') as 'Дата акта'
			,isnull(k.ag,'--') as 'А'
			,isnull(convert(nvarchar(8),k.SumPaymentPart,4),'--') as 'Платеж'
			,isnull(convert(nvarchar(8),k.kb,4),'--') as 'Размер'
			,isnull(convert(nvarchar(8),k.SumK,4),'--') as 'Сумма_К' from CTE1
			left join [data].[dbo].[kb] k on Дог=k.Contract and k.dateact >= @datefrom 
			group by Дог,k.act,k.DateAct,k.ag,k.SumPaymentPart,k.kb,k.SumK
11 окт 14, 00:28    [16690200]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизировать запрос  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Заменять "null-значения полей разного типа данных символами "--" для 300 млрд записей -- это не быстро, да.
11 окт 14, 02:35    [16690322]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизировать запрос  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
2viper2viper
можно ли ускорить выполнение?
возможно.
11 окт 14, 03:35    [16690337]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизировать запрос  [new]
alеks2
Guest
Для начала

1. Не суй под группировку джойн, без необходимости.

2. А нафега тут ваще группировка?
11 окт 14, 15:33    [16690827]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизировать запрос  [new]
2viper2viper
Member

Откуда:
Сообщений: 271
Mind
2viper2viper
можно ли ускорить выполнение?
возможно.

Информативно. ))))
12 окт 14, 10:44    [16692912]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизировать запрос  [new]
Rivkin Dmitry
Member

Откуда: Israel
Сообщений: 5500
Покажи CTE1
12 окт 14, 11:34    [16692961]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизировать запрос  [new]
2viper2viper
Member

Откуда:
Сообщений: 271
alеks2
Для начала

1. Не суй под группировку джойн, без необходимости.

2. А нафега тут ваще группировка?


1,2 - не помогло
12 окт 14, 11:42    [16692969]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизировать запрос  [new]
2viper2viper
Member

Откуда:
Сообщений: 271
Rivkin Dmitry
Покажи CTE1


		with CTE1  as    (select t2.ContractNumber as 'Дог',t2.datecontract as 'Дата нов.дог.',
			t2.DatePosting as 'Дата платежа',
			,t2.SumPaymentTotal as 'СП по договору'
			,t2.[76] as 'Начислено' 				  
             FROM [DATA].[dbo].[76] as t1
                inner join [DATA].[dbo].[76] as t2 on t1.[RegistrationNumber]=t2.[RegistrationNumber]
			 where (t2.[ContractNumber] != t1.[ContractNumber])  
		        and (datediff(day, t1.DateEnd, t2.DateContract) <= 30) 
			group by t2.ContractNumber,t2.datecontract,t2.DatePosting,t2.SumPaymentTotal,t2.[76])
12 окт 14, 11:49    [16692980]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизировать запрос  [new]
vova ivanov
Member [заблокирован]

Откуда:
Сообщений: 1090
2viper2viper
Rivkin Dmitry
Покажи CTE1


		with CTE1  as    (select t2.ContractNumber as 'Дог',t2.datecontract as 'Дата нов.дог.',
			t2.DatePosting as 'Дата платежа',
			,t2.SumPaymentTotal as 'СП по договору'
			,t2.[76] as 'Начислено' 				  
             FROM [DATA].[dbo].[76] as t1
                inner join [DATA].[dbo].[76] as t2 on t1.[RegistrationNumber]=t2.[RegistrationNumber]
			 where (t2.[ContractNumber] != t1.[ContractNumber])  
		        and (datediff(day, t1.DateEnd, t2.DateContract) <= 30) 
			group by t2.ContractNumber,t2.datecontract,t2.DatePosting,t2.SumPaymentTotal,t2.[76])

а тут зачем group by ??
12 окт 14, 12:05    [16692997]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизировать запрос  [new]
Rivkin Dmitry
Member

Откуда: Israel
Сообщений: 5500
vova ivanov,

+1

2viper2viper
И зачем переименовывать поля? Чтобы их еще раз переименовать?... Как-то все мутно...
Покажь таблицы kb и 76 (классное название, емкое и понятное!)
И вообще, на словах задачку объяснил бы
12 окт 14, 13:06    [16693097]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизировать запрос  [new]
2viper2viper
Member

Откуда:
Сообщений: 271
vova ivanov, group by нужен. в таблице 76 может быть несколько проводок по одному договору
запрос черновой, забыл подправить псевдонимы. Спс)
Вопрос решил добавлением индексов
12 окт 14, 21:59    [16694293]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизировать запрос  [new]
vova ivanov
Member [заблокирован]

Откуда:
Сообщений: 1090
2viper2viper
vova ivanov, group by нужен. в таблице 76 может быть несколько проводок по одному договору
и что ?
ты хоть понимаешь, что у тебя, при отсутствии агрегации и при одинаковых
t2.ContractNumber as 'Дог',t2.datecontract as 'Дата нов.дог.',
			t2.DatePosting as 'Дата платежа',
			,t2.SumPaymentTotal as 'СП по договору'
			,t2.[76] as 'Начислено'

"теряются" записи ?
а если такая ситуация невозможна, то group by - просто не нужен, и только "греет сервер" !
13 окт 14, 00:59    [16694707]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить