|
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) перейти на прямые запросы и усовершенствовать структуру индексов...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |