|
Нужна помощь по запросу. | ☑ | ||
---|---|---|---|---|
0
ksergey
13.07.15
✎
10:24
|
Добрый день коллеги.
Подскажи в таком вот запросе возможности оптимизации, т.к. в последнее время пользователи стали жаловаться на длительное время поиска товара по артикулу. Замер производительности показал , что в алгоритме 93% занимает время выполнения запроса. Запрос несложный, поэтому я например не могу придумать хороший вариант оптимизации, кроме как установить индексы по всем полям поиска. Основные товары в базе – это автозапчасти и большое значение имеет поиск по Артикулу (порядка 1млн записей). Суть запроса (чтобы понимался лучше) – в карточке товара есть 2 поля Артикул и АртикулНеОригинал, а также соответствующие табчасти (для учета различных вариантов аналогов и схожих товаров по артикулам). Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка КАК Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Артикул ПОДОБНО &Отбор | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | Номенклатура.Ссылка КАК Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.АртикулНеОригинал ПОДОБНО &Отбор | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | НоменклатураАртикулы.Ссылка |ИЗ | Справочник.Номенклатура.Артикулы КАК НоменклатураАртикулы |ГДЕ | НоменклатураАртикулы.Артикул ПОДОБНО &Отбор | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | НоменклатураАртикулыОригинал.Ссылка |ИЗ | Справочник.Номенклатура.АртикулНеОригинал КАК НоменклатураАртикулыОригинал |ГДЕ | НоменклатураАртикулыОригинал.Артикул ПОДОБНО &Отбор"; Заранее благодарен за любую идею. |
|||
1
ksergey
13.07.15
✎
10:25
|
поиск выполняется как правило по части (4-5символов) артикула.
|
|||
2
mikecool
13.07.15
✎
10:25
|
завести артикул справочником - как идея?
|
|||
3
Ненавижу 1С
гуру
13.07.15
✎
10:26
|
пример передачи параметра Отбор покажи
|
|||
4
lera01
13.07.15
✎
10:33
|
Может, есть смысл регистр сведений приспособить для хранения этого соответствия? Ресурсов нет, измерения Номенклатура, СтрокаАртикул. При записи номенклатуры организовать ведение этого регистра...
|
|||
5
D_E_S_131
13.07.15
✎
10:37
|
"в последнее время пользователи стали жаловаться..." — может базу нужно переиндексировать?
|
|||
6
D_E_S_131
13.07.15
✎
10:37
|
(4) Лишние сущности предлагаете.
|
|||
7
palpetrovich
13.07.15
✎
10:39
|
ниче не понял, что правда есть
Справочник.Номенклатура.Артикул и Справочник.Номенклатура.Артикулы ? и зачем вообще 2 последних части запроса, в чем их смысл? |
|||
8
Drac0
13.07.15
✎
10:41
|
(0) Заюзай полнотекстовый поиск.
|
|||
9
Drac0
13.07.15
✎
10:41
|
(7) Там есть основной артикул, который в шапке и список левых артикулов докучи в ТЧ.
|
|||
10
palpetrovich
13.07.15
✎
10:43
|
(9) т.е еще 2 ТЧ артикулов? причем одна ТЧ называется так-же как и реквизит АртикулНеОригинал ?
|
|||
11
fisher
13.07.15
✎
10:43
|
Из идей - зафигачить все артикулы в один регистр сведений с нужными измерениями и прикрутить полнотекстовый поиск.
Но даже и без полнотекстового поиска быстрее будет. |
|||
12
palpetrovich
13.07.15
✎
10:46
|
+(10) если так + "основной артикул" присутстует в ТЧ, то можно по "основному" запрос не строить
... а вообще да, РС - нарашивается |
|||
13
Fragster
гуру
13.07.15
✎
10:56
|
если поиск по любой части, то (8), если только по началу, то проверить индексацию по полям.
|
|||
14
exchang
13.07.15
✎
10:58
|
ГДЕ
Номенклатура.Артикул + Номенклатура.АртикулНеОригинал ПОДОБНО &Отбор |
|||
15
ksergey
13.07.15
✎
11:03
|
(3)
Запрос.УстановитьПараметр("Отбор", "%" + СокрЛП(Отбор) + "%"); (12) согласен-это упростит запрос, но надо проверить - возможно есть записи, где только один Основной артикул, а допол.ТЧ - пустые. (14) идею понял, проверю насчет РегистраСведений - к такой идее тоже пришел, возможно если ничего не поможет придется реализовать |
|||
16
ksergey
13.07.15
✎
12:09
|
спасибо всем за участие в обсуждении
|
|||
17
ksergey
13.07.15
✎
16:50
|
(14) сделал данный вариант - реально помогло, скорость выросло примерно на 60% !
Проанализировав заполнение артикула в справочнике, выяснил что в таб.частях Артикулов немного. Т.е. основная часть нагрузки в запросе на Части запрос №1 и №2. Получается, соединив их в одно условие в запросе избавился от одного из нагруженных блоков, и получил реальный бонус Спасибо |
|||
18
D_E_S_131
13.07.15
✎
17:48
|
(17) Одно НО — по такому условию не удастся определить оригинальный или нет нашелся артикул. Думаю, что в твоем запросе замена "ОБЪЕДИНИТЬ" на "ОБЪЕДИНИТЬ ВСЕ" дала бы и больший прирост.
|
|||
19
MKZM
13.07.15
✎
18:47
|
(18) Почему?
|
|||
20
РазДва
13.07.15
✎
18:58
|
(15) Убери "процент" в начале отбора, всё "залетает", нефиг искать артикул с середины..
|
|||
21
ILM
гуру
13.07.15
✎
19:02
|
А поиск идет всегда по первым 5 символам?
|
|||
22
MKZM
13.07.15
✎
19:05
|
(18) "Подобно" и оригинально, две вещи несовместны, как сказал бы Пушкин.
|
|||
23
ILM
гуру
13.07.15
✎
19:05
|
(18) А ВЫБОР сможет помочь
|
|||
24
MKZM
13.07.15
✎
19:09
|
У него четыре выборки. Где все все подобно. Что тут можно посоветовать? Так надо. Значит так надо.
|
|||
25
MKZM
13.07.15
✎
19:11
|
Другой вопрос, можно получить все подобное, а потом сделать выборку.
|
|||
26
MKZM
13.07.15
✎
19:11
|
Но быстрее это будет? Надо считать.
|
|||
27
ILM
гуру
13.07.15
✎
19:17
|
Лучший выход ПОДСТРОКА(Поля, 1, 5) = &Отбор
|
|||
28
MKZM
13.07.15
✎
19:18
|
(27) Чем лучше?
|
|||
29
MKZM
13.07.15
✎
19:21
|
поиск выполняется как правило по части (4-5символов) артикула.
Как правило. или? |
|||
30
MKZM
13.07.15
✎
19:25
|
Понял. В торговле 10, вроде, есть форма поиска. Посмотри как реализуется.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |