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