Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.10.27;
Скачать: CL | DM;

Вниз

Оптимизация SQL запроса   Найти похожие ветки 

 
DelphiN!   (2010-12-22 09:08) [0]

Доброго времени суток!
Помогите оптимизировать следующий запрос

select

   cast(time_ as date),
   (select first 1 period_ from periodi where cast(time_ as date) = cast(MAIN.time_ as date)),

   (select sum(summ_) from casebase where
   (period_ = (select first 1 period_ from periodi where cast(time_ as date) = cast(MAIN.time_ as date))))"SUM"

   from casebase MAIN
   where
   time_ > "01.12.2010" and time_ < "20.12.2010" and prim_ <> "Login activated" and prim_ <> "Login deactivated"
    and prim_ <> "OUT" and prim_ <> "BONUS"
   group by 1
   order by 1


Можно ли из него сделать что-то наподобие

select

   cast(time_ as date),
   (select first 1 period_ from periodi where cast(time_ as date) = cast(MAIN.time_ as date)),

   (select sum(summ_) from casebase where
   (period_ = MAIN.2))"SUM"

   from casebase MAIN
   where
   time_ > "01.12.2010" and time_ < "20.12.2010" and prim_ <> "Login activated" and prim_ <> "Login deactivated"
    and prim_ <> "OUT" and prim_ <> "BONUS"
   group by 1
   order by 1


То есть не делать повторный под запрос а указать условие period_ = "тому что в столбце 2"


 
Виталий Панасенко   (2010-12-22 09:14) [1]

execute block?


 
DelphiN!   (2010-12-22 09:18) [2]


> Виталий Панасенко   (22.12.10 09:14) [1]
> execute block?


А можно пример?


 
sniknik ©   (2010-12-22 09:46) [3]

гораздо существеннее выигрыш будет если внутренние под запросы будут использовать индексы. для чего убрать вычисления для сравниваемого поля (ведь cast(time_ as date) это "обрезание" времени из дататайма, правильно понял? или там строка потому как дальше условие со строкой (это не авто преобразование?) тогда сменить тип поля)


 
Виталий Панасенко   (2010-12-22 10:55) [4]

execute block - аналог ХП.. только без модификации метаданных БД(ничего создавать не нужно, как в случае с хранимой процедурой)


 
evvcom ©   (2010-12-31 14:24) [5]

Как все любят делать для вычисления поля дополнительный селект, возвращающий одно значение! Чем джойны не устраивают? Я не профи в птичке, но в оракле делаю примерно так:

select
 cast(MAIN.time_ as date), -- не меняю, может и так
 per.period_
 -- прочие поля
from casebase MAIN
 left join (
   select distinct
     period_,
     cast(time_ as date) as time_
   from periodi) per
 on per.time_ = cast(MAIN.time_ as date)



Страницы: 1 вся ветка

Текущий архив: 2013.10.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.008 c
15-1368563403
Юрий
2013-05-15 00:30
2013.10.27
С днем рождения ! 15 мая 2013 среда


1-1317227566
sniknik
2011-09-28 20:32
2013.10.27
Ситуация... Citrix and TPrinter поддержка "отображаемых"


2-1359696227
Anthony68
2013-02-01 09:23
2013.10.27
Почему то не вызывается событие OnShow компонента TOpenDialog


15-1359569183
dmk
2013-01-30 22:06
2013.10.27
UPS или проблемы с электропитанием


15-1368390603
Юрий
2013-05-13 00:30
2013.10.27
С днем рождения ! 13 мая 2013 понедельник