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

Откуда: Moscow
Сообщений: 2762
Добрый день! запрос, вроде как, рабочий. но, у меня ощущение, что сделал я далеко не оптимально. три таблицы, как мне кажется, нельзя запихивать в FROM
select a.regn as 'регномер', sum(a.iitg) as 'чистые активы', b.c3 as 'капитал', c.oitga as 'дневной оборот', a.dt as 'дата' 
from dbo.[122012b1] a, dbo.[122012_134d] b, dbo.[122012b1] c
where a.regn=b.regn 
	and a.regn = c.regn 
		and b.c1 in ('000')
			and (left(a.num_sc,1) in ('1', '2', '3', '4', '5')  and (a.a_p = '1'))
				and c.num_sc in ('30102')
group by a.regn, a.dt, b.c3, c.oitga
order by 1

Спасибо!
+ select @@VERSION
Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (Intel X86) Dec 28 2012 19:06:41 Copyright (c) Microsoft Corporation Express Edition on Windows NT 6.1 <X86> (Build 7601: Service Pack 1)
4 апр 13, 15:56    [14136496]     Ответить | Цитировать Сообщить модератору
 Re: помогите усовершенствовать запрос  [new]
iap
Member

Откуда: Москва
Сообщений: 47052
select a.regn as [регномер], sum(a.iitg) as [чистые активы], b.c3 as [капитал], c.oitga as [дневной оборот], a.dt as [дата]
from dbo.[122012b1] a
join dbo.[122012_134d] b on a.regn=b.regn
join dbo.[122012b1] c on a.regn = c.regn 
where b.c1='000'
  and a.num_sc like'[12345]%'
  and a.a_p='1'
  and c.num_sc='30102'
group by a.regn, a.dt, b.c3, c.oitga
order by [регномер];
4 апр 13, 16:05    [14136549]     Ответить | Цитировать Сообщить модератору
 Re: помогите усовершенствовать запрос  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
а что не так-то? вроде обычный запрос...
select 
   a.regn as 'регномер', 
   sum(a.iitg) as 'чистые активы', 
   b.c3 as 'капитал', 
   c.oitga as 'дневной оборот', 
   a.dt as 'дата' 
from dbo.[122012b1] a
join dbo.[122012_134d] b on b.regn=a.regn and b.c1 ='000'
join dbo.[122012b1] c on c.regn=a.regn and c.num_sc ='30102'
where a.a_p = '1' and a.num_sc like '[1-5]%' 
group by a.regn, a.dt, b.c3, c.oitga
order by 1
4 апр 13, 16:08    [14136565]     Ответить | Цитировать Сообщить модератору
 Re: помогите усовершенствовать запрос  [new]
PlanB
Member

Откуда: Moscow
Сообщений: 2762
>>а что не так-то? вроде обычный запрос...
прекрасно, если все так.


Спасибо за помощь!
4 апр 13, 16:22    [14136667]     Ответить | Цитировать Сообщить модератору
 Re: помогите усовершенствовать запрос  [new]
Гость333
Member

Откуда:
Сообщений: 3683
PlanB
три таблицы, как мне кажется, нельзя запихивать в FROM

Это вы не видели запросов, где во FROM запихнуто двадцать три таблицы
4 апр 13, 16:37    [14136758]     Ответить | Цитировать Сообщить модератору
 Re: помогите усовершенствовать запрос  [new]
PlanB
Member

Откуда: Moscow
Сообщений: 2762
Гость333
PlanB
три таблицы, как мне кажется, нельзя запихивать в FROM

Это вы не видели запросов, где во FROM запихнуто двадцать три таблицы
мне кажется, что с join работает как-то правильнее (быстрее), чем с "двадцатью таблицами в from". я может ошибаюсь. если не лень, объясните, пож-та, почему



PS все хочу на курсы по sql записаться, да никак руки не дойдут.
5 апр 13, 08:45    [14138535]     Ответить | Цитировать Сообщить модератору
 Re: помогите усовершенствовать запрос  [new]
wizli
Member

Откуда: Minsk
Сообщений: 270
PlanB,
Запрос заработал быстрее не потому что вы пришли к join, для join и простого перечисления таблиц оптимизатор построит одинаковые планы запроса.
Запрос стал работать быстрее так как ваше условие было значительно упрощено.
5 апр 13, 09:52    [14138698]     Ответить | Цитировать Сообщить модератору
 Re: помогите усовершенствовать запрос  [new]
Гость333
Member

Откуда:
Сообщений: 3683
PlanB
мне кажется, что с join работает как-то правильнее (быстрее), чем с "двадцатью таблицами в from".

А, вы имели в виду "таблицы во FROM, перечисленные через запятую". Как уже сказали, семантически это не отличается от "таблиц, соединённых через JOIN". Синтаксис с JOIN правильнее тем, что его легче читать — скажем, в том же "запросе из двадцати таблиц" — когда мы видим во FROM очередную таблицу, то рядом с ней видим условия соединения, можно всё прочесть последовательно. При чтении запроса с запятыми — видим во FROM очередную таблицу, прыгаем взглядом в WHERE, там из нескольких десятков условий кое-как находим условия соединения, снова переносим взгляд во FROM и так далее.
5 апр 13, 10:31    [14138824]     Ответить | Цитировать Сообщить модератору
 Re: помогите усовершенствовать запрос  [new]
PlanB
Member

Откуда: Moscow
Сообщений: 2762
спасибо за науку!
5 апр 13, 11:28    [14139184]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить