Имя: Пароль:
1C
 
Что быстрей перебор справочника или запрос?
0 YHVVH
 
19.09.08
10:23
сосбно сабж. знаю что перебором но почему ? жду коментарий.
1 Vitello
 
19.09.08
10:24
Мля...в очередной раз холивар на замусоленую тему...
2 YHVVH
 
19.09.08
10:24
ссылочку плиз.
3 zyto
 
19.09.08
10:25
(1)А какой тут может быть холивар?
(0)Если знаешь - делай, зачем спрашиваешь?
4 ДенисЧ
 
19.09.08
10:25
Смотря какая платформа, размер справочника, прямые руки в написаниии запроса и проч.
В общем - лицом к стенке и пулю в лоб за розжиг.
5 YHVVH
 
19.09.08
10:26
(3) спрашиваю почему быстрей?
6 UnoMomento
 
19.09.08
10:26
Если прямым запросом, то примерно одинаково
7 Дуб
 
19.09.08
10:26
(0) да ну! В скульной базе? Прямым запросом? Медленнее, чем перебором?
8 YHVVH
 
19.09.08
10:28
какая разница в размере справочника не пойму, платформа 7ка торговля.

вот напрмиер код:

Варинат 1:

Товар = СоздатьОбъект("ТаблицаЗначений");
   Товар.НоваяКолонка("Товар");
   СпрТ=СоздатьОбъект("Справочник.Номенклатура");
   спрТ.ВыбратьЭлементы();
   Пока спрТ.ПолучитьЭлемент() = 1 Цикл
       Если спрТ.ЭтоГруппа()=1 Тогда
           продолжить;
       КонецЕсли;
       Если спрТ.ПометкаУдаления()=1 Тогда
           продолжить;
       КонецЕсли;
       
       Товар.НоваяСтрока();
       Товар.Товар = спрТ.ТекущийЭлемент();
   КонецЦикла;

Вариант 2

Товар = СоздатьОбъект("ТаблицаЗначений");
ТекстЗапроса = "
       |Товар = Справочник.Номенклатура.ТекущийЭлемент;
       |Группировка Товар без Групп;
       |Условие (Товар.ЭтоГруппа() = 0);
       |Условие (Товар.ПометкаУдаления() = 0);
       |";

Запрос = СоздатьОбъект("Запрос");
Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда
   Возврат;
КонецЕсли;
Запрос.Выгрузить(Товар,1);
9 YHVVH
 
19.09.08
10:29
(7) База DBF, запрос не прямой.
10 dk
 
19.09.08
10:29
(0) есть еще фильтрация по индексируемым колонкам и сортировка, хотя ...
11 YHVVH
 
19.09.08
10:31
Запрос отстает поп роизводительно потм еще надо время чтоб его пербрать , но это не в счет.
12 Дуб
 
19.09.08
10:30
(9) с этого бы и начал ;)
13 ДенисЧ
 
19.09.08
10:30
(8) такой запрос будет однозначно медленней. Я ж говори про руки...
14 Heckfy
 
19.09.08
10:31
(8) При 5-ти элементах в справочнике будет быстрее перебор. При  50 000 будет быстрее запрос. А вообще:
В магазине одежды. Покупатель:
- У вас есть мужские трусы?
Продавщица:
- Нет, только женские. Но возьмите их. Какая разница?
- Сейчас я эту разницу достану и вам по губам нашлепаю.
15 YHVVH
 
19.09.08
10:33
(13) скажи как запрос написать чтоб быстрей был?
16 Mikeware
 
19.09.08
10:34
Выполни в 1CQA запрос
select Товар.id [Товар $Справочник.Номенклатура]
from $Справочеик.Номенклатура спрНоменклатура (Nolock)
where спрНоменклатура.IsMark=0 and спрНоменклатура.IsFolder=0
и удивись...
17 YHVVH
 
19.09.08
10:35
(14) поз 20 000, быстрей пербор за 3 сек, а запрос за 23.
18 ДенисЧ
 
19.09.08
10:35
(15) убрать вызовы функций и читать про язык запросов.
19 dk
 
19.09.08
10:36
(13) :)
       |Обрабатывать НепомеченныеНаудаление;
       |Товар = Справочник.Номенклатура.ТекущийЭлемент;
       |Группировка Товар без Групп;
       |Без Итогов;
       |";
хотя первая строчка необязательная
20 YHVVH
 
19.09.08
10:38
(16) это просто заменить текст запроса? Или что еще нужно?
21 dk
 
19.09.08
10:37
(19) для (8)
22 YHVVH
 
19.09.08
10:39
(19) а где условия на группу?
23 YHVVH
 
19.09.08
10:40
(19) всеравно медленней запрос работает.
24 dk
 
19.09.08
10:40
не нужны, есть же "без Групп"
25 YHVVH
 
19.09.08
10:42
1
10:41:21
10:41:24
18766
2
10:41:28
10:41:41
18766
26 ДенисЧ
 
19.09.08
10:40
(22) Я же уже сказал - почитай про язык запросов.
27 Heckfy
 
19.09.08
10:41
(17) При 20 тыс. запрос должен работать быстрее перебора. Отладчик тебя спасет. Наверное, узкое место здесь:
Запрос.Выгрузить(Товар,1);
28 Господин ПЖ
 
19.09.08
10:40
(22) Группировка Товар без Групп;

этого хватит
29 YHVVH
 
19.09.08
10:44
(27) что там отладчиком делать то?
Запрос.Выгрузить(Товар,1); - занимает меньше секунды проверял.
30 Heckfy
 
19.09.08
10:44
Смысл этого в чем?
|Группировка Товар без Групп;
       |Условие (Товар.ЭтоГруппа() = 0);
31 YHVVH
 
19.09.08
10:45
(27) не работает быстрей в 7 раз медленей работает. Что (19)  и что (8) работают медленей чем перебор.
(16) не проерял еще, потомучто не знаю где эту хрень писать.
32 YHVVH
 
19.09.08
10:46
(3) забей убрал я это, всеравно медленно.
33 dk
 
19.09.08
10:47
а теперь поставь условие на вхождение в парочку групп
и еще раз сделай замер, хотя ...
34 YHVVH
 
19.09.08
10:48
(33) проблема в том что без условий надо.
35 Господин ПЖ
 
19.09.08
10:47
>>|Группировка Товар без Групп;

>>в 7 раз медленей работает

группировки в клюшках собираются во временных таблицах на клиенте...
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn