Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2013.10.27;
Скачать: [xml.tar.bz2];

Вниз

Оптимизация 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;
Скачать: [xml.tar.bz2];

Наверх





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


15-1368216598
Bitt
2013-05-11 00:09
2013.10.27
Передать управление при изменении byte


1-1316775192
denkop
2011-09-23 14:53
2013.10.27
Помогите с отрисовкой текста на TImage


15-1368535749
brother
2013-05-14 16:49
2013.10.27
Помогите найти запись концерта


2-1359720812
salexn_123
2013-02-01 16:13
2013.10.27
Компиляция из командной строки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский