Имя: Пароль:
1C
1С v8
Вопрос по производительности Запроса почему так?
,
0 y22-k
 
17.05.12
10:41
Добрый день подскажите пожалуйста по запросу

Выбрать &ТипЦен В (&МТиповЦены)
поместить ТипЦены_
//вообще тут запрос с массивом типов цен индекс по типу цен
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ЦеныНоменклатурыСрезПоследних.Номенклатура,
   ЦеныНоменклатурыСрезПоследних.ТипЦен,
   ЦеныНоменклатурыСрезПоследних.Цена,
   ИСТИНА КАК Акция
ПОМЕСТИТЬ ЦеныАкции
ИЗ
   ТипЦены_ КАК ТипЦены_
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ) КАК ЦеныНоменклатурыСрезПоследних
       ПО ТипЦены_.ТипЦены = ЦеныНоменклатурыСрезПоследних.ТипЦен
ГДЕ
   НЕ ЦеныНоменклатурыСрезПоследних.Номенклатура ЕСТЬ NULL и ЦеныНоменклатурыСрезПоследних.Номенклатура В (&Номенклатура)


Очень долго выполняется второй пакет чуть меньше секунды причем тупо запрос к регистру цены без отборов около 1.3 секунды 65000 записей
причем если я ставлю массив номенклатуры не в условия а в скобки еще медленнее, внутреннее соединение тоже эффекта никакого не дает что еще можно придумать
1 Господин ПЖ
 
17.05.12
10:42
я бы тоже тормозил...

ГДЕ
   и ЦеныНоменклатурыСрезПоследних.Номенклатура В (&Номенклатура)
2 Ненавижу 1С
 
гуру
17.05.12
10:43
ТипЦен индексирован или нет?
3 fisher
 
17.05.12
10:47
"причем если я ставлю массив номенклатуры не в условия а в скобки еще медленнее"
Да ну. Покажи как делаешь. Сколько позиций в массиве?
4 y22-k
 
17.05.12
10:47
(1) читай внимательнее
я писал
причем если я ставлю массив номенклатуры не в условия а в скобки  еще медленнее
(2) Да
5 y22-k
 
17.05.12
10:48
(3) 35 но бывает и по 100
6 Господин ПЖ
 
17.05.12
10:49
(4) ну попробуй запихнуть отдельно во времянки, потом соединяй
7 Господин ПЖ
 
17.05.12
10:49
чо там с индексами то в итоге...
8 fisher
 
17.05.12
10:49
А типов цен сколько?
9 fisher
 
17.05.12
10:50
И вообще - озвучь строктуру регистра. Какие измерения и в каком порядке, ресурсы, реквизиты.
10 Bober
 
17.05.12
10:51
(0)
.СрезПоследних(&Дата, ТипЦен В (ВЫБРАТЬ ТипЦены_.ТипЦены ИЗ ТипЦены_ КАК ТипЦены_) И Номенклатура В(&Номенклатура))
11 Bober
 
17.05.12
10:53
(10)

"ЛЕВОЕ СОЕДИНЕНИЕ" и

"ГДЕ
  НЕ ЦеныНоменклатурыСрезПоследних.Номенклатура ЕСТЬ NULL и ЦеныНоменклатурыСрезПоследних.Номенклатура В (&Номенклатура) "

уже не потребуется
12 luckyluke
 
17.05.12
10:53
(0) Может стоит еще и по номенклатуре соединять?
13 luckyluke
 
17.05.12
10:54
(12) или их нет в таблице ТипЦены_ ?
14 fisher
 
17.05.12
10:55
(10) Во-во. При нормальной структуре регистра тормозов быть не должно.
15 luckyluke
 
17.05.12
10:55
+(13) Как на счет тогда &Номенклатура запихнуть в ТЗ, соединить с ТипЦены_ и потом соединять по типу цен и номенклатуре?
16 y22-k
 
17.05.12
10:56
(1) я сам офигел первый вариант в среднем 0.7-0.9 секунды
второй
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ЦеныНоменклатурыСрезПоследних.Номенклатура,
   ЦеныНоменклатурыСрезПоследних.ТипЦен,
   ЦеныНоменклатурыСрезПоследних.Цена,
   ИСТИНА КАК Акция,
   "" КАК Поле1,
   "" КАК Поле2,
   0 КАК Поле3
ПОМЕСТИТЬ ЦеныАкции
ИЗ
   ТипЦены_ КАК ТипЦены_
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, Номенклатура В (&Номенклатура)) КАК ЦеныНоменклатурыСрезПоследних
       ПО ТипЦены_.ТипЦены = ЦеныНоменклатурыСрезПоследних.ТипЦен
;
этот 1.7 - 3.2 иногда до 10 сек
17 y22-k
 
17.05.12
10:57
(12) Нет
18 Bober
 
17.05.12
10:58
(16) как вариант, нет индекса, так как у типового регистра цен порядок измерений: типцен, номенклатура. Нет индекса по номенклатуре
19 y22-k
 
17.05.12
10:58
(14) регистр типовой типЦенНоменклатуры
20 Bober
 
17.05.12
10:58
(16) но если еще добавишь условие по типц цен, то производительность пойдет в +
21 y22-k
 
17.05.12
11:00
(18) действительно нет
(20) ок спс  попробую
22 y22-k
 
17.05.12
11:41
(10) чуть быстрее 08-1,1, но самое быстрое почему-то оказалось

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ЦеныНоменклатурыСрезПоследних.Номенклатура,
   ЦеныНоменклатурыСрезПоследних.ТипЦен,
   ЦеныНоменклатурыСрезПоследних.Цена,
   ИСТИНА КАК Акция,
   "" КАК Поле1,
   "" КАК Поле2,
   0 КАК Поле3
ПОМЕСТИТЬ ЦеныАкции
ИЗ
   РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
           &Дата,
           ТипЦен В
                   (ВЫБРАТЬ
                       ТипЦены_.ТипЦены
                   ИЗ
                       ТипЦены_ КАК ТипЦены_)
                                       //И Номенклатура В (&Номенклатура)
               ) КАК ЦеныНоменклатурыСрезПоследних
               Где ЦеныНоменклатурыСрезПоследних.Номенклатура В(&Номенклатура)
;

0,65 секунд в среднем
23 cViper
 
17.05.12
12:03
(0) Итоги регистра на какую дату рассчитаны?
24 unregistered
 
17.05.12
12:26
А если так:

ВЫБРАТЬ
  Номенклатура.Номенклатура КАК Номенклатура,
  ТипыЦенНоменклатуры.ТипЦены КАК ТипЦены
ПОМЕСТИТЬ НоменклатураИТипыЦен
ИЗ
  &Номенклатура КАК Номенклатура,
  &ТипыЦенНоменклатуры КАК ТипыЦенНоменклатуры
ИНДЕКСИРОВАТЬ ПО
  Номенклатура,
  ТипЦены
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
  ЦеныНоменклатурыСрезПоследних.Номенклатура,
  ЦеныНоменклатурыСрезПоследних.ТипЦен,
  ЦеныНоменклатурыСрезПоследних.Цена,
  ИСТИНА КАК Акция
ИЗ
  РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата,
     (Номенклатура, ТипЦен) В
        (ВЫБРАТЬ
           НоменклатураИТипыЦен.Номенклатура,
           НоменклатураИТипыЦен.ТипЦены
        ИЗ
           НоменклатураИТипыЦен КАК НоменклатураИТипыЦен)) КАК ЦеныНоменклатурыСрезПоследних


Вместо массивов в качестве параметров &Номенклатура и &ТипыЦенНоменклатуры в первом запросе передаются таблицы значений с соответствующими полями.
25 Bober
 
17.05.12
12:42
(22) тогда надо смотреть что творится на SQL сервере (реже на сервере 1с), возможно давно не выполняли регламентные процедуры.
26 fisher
 
17.05.12
12:59
(0) Файловая?
27 y22-k
 
17.05.12
14:13
(26) SQL 2008
(24) попробую сейчас
(25) Раз в Неделю Реорганизация индекса и раз в неделю перестройка индекса
Обновление статистик 2 раза в день утром и вечером
28 Bober
 
17.05.12
14:14
(27) если есть время, то посмотри планы запросов.
29 y22-k
 
17.05.12
14:15
(28) где их можно посмотреть?
30 Bober
 
17.05.12
14:20
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.