Имя: Пароль:
1C
1C 7.7
v7: Метод "ВыбратьЭлементыПоРеквизиту()" - долгое выполнение по текстовому реквизиту
,
0 Подводный Таракан
 
04.10.11
09:56
Есть база самопис на sql. Размер достаточно большой. В базе есть справочник тоже очень большого размера (более 500000 элементов). Справочник постоянно наполняется. В нем есть реквизиты типа справочник и текст. Текстовые реквизиты содержат примерно следуюущю инфу:
""+СокрЛП(Реквизит1)+"|"+СокрЛП(Реквизит1).

В последнее время наблюдаются жуткие тормоза при методе
ВыбратьЭлементыПоРеквизиту("ТекстовыйРеквизит");

заменяю эту конструкцию на

Спр.ВыбратьЭлементыПоРеквизиту("Реквизит1");
Пока Спр.ПолучитьЭлемент()=1 Цикл
   Если Спр.Реквизит2<>Реквизит2 Тогда
       Продолжить;
   КонецЕсли;
КонецЦикла;

Работает значительно быстрее.


При чем, при использовании первого метода (по текстовому реквизиту) наблюдается блокировка скл таблицы справочника, которая блочит других пользователей, хотя запись в справочник не идет, а только чтение.

Кто нибудь сталкивался с данной проблемой, какие пути решения?
1 Рэйв
 
04.10.11
09:58
неограниченная длина?
2 Ёпрст
 
04.10.11
09:58
и, какой му делает индекс на текстовое поле ? И длины оно поди в 200 символов ?
:))))))))))))))))))
3 Ёпрст
 
04.10.11
09:59
(1):)))))))))))))

на неограниченную длину индекс не слепишь.
4 Рэйв
 
04.10.11
09:59
(3):-)
5 Эльниньо
 
04.10.11
10:01
Сделай реквизит длинной 18.
Склеивай не наименования, а айдишники.
6 Подводный Таракан
 
04.10.11
10:03
(2) Индексы длиной 20, 30 и 50 символов
(5) айдишники и склеиваю
7 Ёпрст
 
04.10.11
10:08
50 символов?
И че ты хочешь тогда ?
:)))
8 Mikeware
 
04.10.11
10:12
(7) 50 символов - не много. Вопрос в вариативности поля.
9 Подводный Таракан
 
04.10.11
10:13
(7) а сколько допустимо? Если 18 как написал Эльниньо, нормально будет? Или лучше вообще отказаться от текстовых индексов?
10 ASU_Diamond
 
04.10.11
10:13
а через запрос найти элементы по значению нескольких реквизитов не проще сделать?
11 Ёпрст
 
04.10.11
10:13
(8) если он idники складывает, еще и разделитель накой-то хрен, то ...очень большая.
Еще и с пропусками поди.
12 Mikeware
 
04.10.11
10:34
(11) По идее, если инвертировать id'ы , можно несколько улучшить ситуацию.
13 ASU_Diamond
 
04.10.11
10:47
(12) такой сборный индекс я использовал только в документах, чтобы потом делать отборы в журналах, на кой он нужен в справочнике?
14 Подводный Таракан
 
04.10.11
11:12
(13) ну изначально видимо задумывался, чтобы отбирать по 2-м реквизитам справочника. идшники примерно такого вида: 55787CTR:0
15 ASU_Diamond
 
04.10.11
11:23
(14) а вариант (10) не лучше?
16 Подводный Таракан
 
04.10.11
11:25
(15) ну бытует мнение, что запросы в 7-ке работают медленнее, поэтому через них и не делалось.
17 Подводный Таракан
 
04.10.11
11:28
(11) Епрст, а как улучшить ситуацию? отказаться от текстовых индексов совсем или усовершенствовать их структуру каким либо образом?
18 ДенисЧ
 
04.10.11
11:30
(17) перейти на прямые запросы и усовершенствовать структуру индексов...
Независимо от того, куда вы едете — это в гору и против ветра!