Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: украшаем запрос MS SQL
Показать сообщение отдельно

Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


Да, запрос у меня получился несколько однобокий.

AFAIK вьюхи интерпритируются примерно как макрос - т.е. хранится только код запроса, и он подставляется в другие запросы - содержимое view никак специально не индексируется, не кешируется и т.п.
Можно использовать не view, а подзапрос:

Код: Выделить весь код
select *
  from
    (select * from accDebet join accCliPay on (accCliPay.accPayId=accDebet.accPayId and accCliPay.payCod=1)) as u1,
    (select * from accDebet join accCliPay on (accCliPay.accPayId=accDebet.accPayId and accCliPay.payCod=1)) as u2
  where
    u1.dateIn>'2008-08-15' and u2.dateIn>'2008-08-15' -- 4 недели назад - лучше вынести в переменную
    and u1.groupId=u2.groupId2 and u1.recId<>u2.recId
    and u1.dateIn>=u2.dateIn and u1.dateIn<=u2.dateOut
так, по идее, в итоге каждая пара будет выдаваться один раз одной строкой (за исключением случая, когда dateIn у них идентичные - надо обрабатывать отдельно).
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:56, 18-09-2008 | #12

Название темы: украшаем запрос MS SQL