Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.004 c
2-1359632987
SSS
2013-01-31 15:49
2013.10.27
Перерисовка компонентов


15-1368622352
картман
2013-05-15 16:52
2013.10.27
очиститель воздуха


2-1359840337
ttt
2013-02-03 01:25
2013.10.27
Смещение текста в Edit


2-1359921846
Zheksonz
2013-02-04 00:04
2013.10.27
Мистика !))


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




   Наверх