Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Требуеться помощь в оптимизации запроса (число прочтений - 1611 )
yhvvh
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 01. Сентября 2009
Требуеться помощь в оптимизации запроса
01. Сентября 2009 :: 14:02
Печать  
нужно получить последнию цену в разрезе товара по одной ктегории цены
делаю так

ТекстЗапроса = "
     |SELECT  
     |   СпрН.ID AS Товар,
     |      Цены.Цена AS [Цена $Число]
     |FROM
     |      $Справочник.Номенклатура СпрН
     |LEFT JOIN
     |      $Справочник.Цены СпрЦ ON СпрЦ.ParentExt = СпрН.ID
     |LEFT JOIN (
     |      SELECT
     |            Период.objid as objid,
     |            Период.value as Цена
     |      FROM 1sconst as Период
     |      WHERE
     |            Период.date IN
     |            (SELECT
     |                  MAX(Константа.date)
     |            FROM 1sconst as Константа
     |            WHERE
     |                   (Константа.id = $ИсторияРеквизита.Цены.Цена)
     |                  AND (Константа.objid = Период.objid)
     |            )
     |            AND Период.id = $ИсторияРеквизита.Цены.Цена
     |      ) as Цены ON Цены.objid = СпрЦ.id
     |WHERE СпрН.ISFOLDER=2 AND СпрЦ.ISMARK='' AND $СпрЦ.КатегорияЦены = :Оптовая
     |ORDER BY Товар
     |";

можно быстрей получить цену?
чую что можно , помогите плиз.
база ДБФ.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Требуеться помощь в оптимизации запроса
Ответ #1 - 01. Сентября 2009 :: 14:11
Печать  
1.нужна ли тебе сортировка по id  товара ?
2.нужно ли выводить товары без цен ?
  
Наверх
 
IP записан
 
yhvvh
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 01. Сентября 2009
Re: Требуеться помощь в оптимизации запроса
Ответ #2 - 01. Сентября 2009 :: 14:41
Печать  
сортировка не нужна можно выкинуть, а еще ?
цены не нужны пустые
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Требуеться помощь в оптимизации запроса
Ответ #3 - 01. Сентября 2009 :: 14:50
Печать  
yhvvh писал(а) 01. Сентября 2009 :: 14:41:
сортировка не нужна можно выкинуть, а еще ?
цены не нужны пустые

left join -->  inner  join
« Последняя редакция: 02. Сентября 2009 :: 04:45 - Z1 »  
Наверх
 
IP записан
 
ol
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 272
Местоположение: Санкт-Петербург
Зарегистрирован: 24. Января 2009
Пол: Мужской
Re: Требуеться помощь в оптимизации запроса
Ответ #4 - 01. Сентября 2009 :: 16:13
Печать  
я обычно в запросе получаю нужный элемент из спр.Цены, а потом вычисляю цену в цикле по таблице. Присоединяюсь  - тоже интересно, как быстро получить непосредствено в запросе
  
Наверх
ICQ  
IP записан
 
yhvvh
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 01. Сентября 2009
Re: Требуеться помощь в оптимизации запроса
Ответ #5 - 02. Сентября 2009 :: 08:28
Печать  
а всеравно медленноПечаль
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Требуеться помощь в оптимизации запроса
Ответ #6 - 02. Сентября 2009 :: 08:38
Печать  
yhvvh писал(а) 02. Сентября 2009 :: 08:28:
а всеравно медленноПечаль


Вверху прикреплена тема про индексы - если vfpoledb.
http://www.1cpp.ru/forum/YaBB.pl?num=1184317705

Получение всех цен например выглядит так
Код
Выбрать все
SELECT

Период.objid as objid
,Период.date  as date  
,Период.value as Цена  

FROM 1sconst as Период

WHERE
rtno,3) LIKE
$ИсторияРеквизита.Цены.Цена+'"+L_(9+8+6+9+3)+"' ) 


где L_(N) - N символов "_"
задействован индекс
I=IDD     ID,OBJID,DATE,TIME,DOCID,PARTNO 
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать