|   |   | 
| 
 | Временная таблица или таблица значений, что быстрее. | ☑ | ||
|---|---|---|---|---|
| 0
    
        kolts23381 19.08.19✎ 20:15 | 
        Что срабатывает быстрее временная таблица или таблица значений. Много сказано что плохо использовать запросы в цикле(понятное дело не всегда - есть исключения), а про временные таблицы тоже самое можно сказать или нет? Условие - субд MS SQL, а также сервер приложений и субд на одном компьютере.
 Не рассматриваем сложные конструкции, которые удобнее решать запросом, рассматривает только простые отборы, с которыми не сложно работать и с тз. | |||
| 1
    
        xXeNoNx 19.08.19✎ 22:36 | 
        думаю что самокат быстрее велосипеда сработает
 Все в кучу собрал.... Научись формулировать вопросы... | |||
| 2
    
        MakaMaka 19.08.19✎ 23:00 | 
        (0) Да.     | |||
| 3
    
        palsergeich 20.08.19✎ 00:11 | 
        (0) смотря где     | |||
| 4
    
        Aleksandr N 20.08.19✎ 00:17 | 
        (0) Jesus!     | |||
| 5
    
        Chameleon1980 20.08.19✎ 04:29 | 
        Мммм. Что?     | |||
| 6
    
        СтепаDS 20.08.19✎ 04:43 | 
        (0) Точно!     | |||
| 7
    
        13_Mult 20.08.19✎ 07:50 | 
        Потому что гладиолус!     | |||
| 8
    
        asady 20.08.19✎ 07:59 | 
        (0) попробую перевести...
 Запрос = новый запрос; Запрос.текст = "выбрать * поместитт вт_тз из &тз"; Запрос.установитьпараметр("тз", тз); Запрос.менеджервиеменныхтаблиц = новый менеджервремпнныхтаблиц; Заррос.выполнить(); Запрос.текст = "выбрать цена из вт_тз где номпнклаиура = & номенлкатура"; Для каждого стр из товары цикл Запрос.установитьпараметр("номенклатура",стр.номенклатура); Выборка = Запрос.выполнить().выбрать(); Если выборка.следующий() тогда Стр.цена = выборка.цена; Конецесли; Конеццикла; Против классического решения в виде получения результата запроса вне цикла то есть по сути передачей между скулем и сервером 1с некоего массива данных ТС интресуется на ьольшом количестве строк может ли быть оправдан путь с запросом в цикле из временной таблицы. Я лишь попробовал перевести ... Развиваю телепатические способности ;) | |||
| 9
    
        Мимохожий Однако 20.08.19✎ 08:03 | 
        (0) Померяй. Нам расскажешь.     | |||
| 10
    
        Сияющий в темноте 20.08.19✎ 08:08 | 
        Индексированная таблица значений будет быстрее,так как поиск по ней не сильно отличается от поискс в  таблице sql,а обращения к серверу не будет.
 и вообще,если 1с выполняет подготовку запроса при установке его текста,то разница будет несущественной,а если при каждом выполнить будет выбираться план запроса,то будет явно медленней. Насколько я помню,1с не умеет Prepare Execute,из-за этого у них такая паническая боязнь запросов в цикле,и нормальные программисты просто это не всегда могут понять,т.к.привыкли к другому поведению запросов в цикле. | |||
| 11
    
        FIXXXL 20.08.19✎ 08:40 | 
        в общем случае ТЗ - быстрее будет
 Но как ты получил эту ТЗ? И для чего? Ускорения можно добиться и пересмотром алгоритмов в целом | |||
| 12
    
        asady 20.08.19✎ 08:41 | 
        (10) допустим требуется обработвть массив под миллион строк. Затраты на передачу на север 1с со скуля будут значительны, хранение и скан по таблице значений займет время. А хранение временной таблицы на скуле можно и кжшировать и по фонкам попробовать раскидать     | |||
| 13
    
        Cyberhawk 20.08.19✎ 08:48 | 
        "хранение временной таблицы на скуле" // Может, ты хотел сказать "хранение таблицы значений на сервере 1С"? Сколько опечаток...     | |||
| 14
    
        asady 20.08.19✎ 19:08 | 
        (13) temptable остается на скуле, 
 Обрабатываем параллельно запросы к ней из фоновых заданий.как априант | |||
| 15
    
        Лефмихалыч 20.08.19✎ 19:14 | 
        (0) всё зависит от всего и в данном случае это всё имеет решающее значение     | |||
| 16
    
        NorthWind 20.08.19✎ 19:21 | 
        (15) это вам не это...     | |||
| 17
    
        Asmody 20.08.19✎ 22:25 | 
        42     | |||
| 18
    
        Borteg 20.08.19✎ 23:47 | 
        (12) стоит обрабатывать порциями, и точно избегать тз в миллион строк, у меня на боевой базе данные от ОФД приходят в экселе по 15-20 миллионов строк. Если это собрать в ТЗ, сервер 1с можно тушить, а вот работа через ADO по 25000 строк весь этот "массив" обрабатывает за 30 минут.
 Вообще следует избегать таблиц больше 50000 строк(это для моего сервера и вычислено практическим способом). Обработка данных через запрос(временная таблица) происходит значительно быстрее. Но это на моих задачах, при моих условиях. Изначально было тоже ТЗ, но как только оно достигало около миллиона строк, обработка сильно замедлялась. | |||
| 19
    
        rogachev 21.08.19✎ 00:03 | 
        запросы всегда быстрее . временная таблица у нас где ?     | |||
| 20
    
        palsergeich 21.08.19✎ 00:04 | 
        (19) Не всегда.
 Для каких нибудь извращений типо графов реализация на ТЗ может оказаться существенно быстрее запросной техники. Все зависит от задачи. | |||
| 21
    
        Fram 21.08.19✎ 00:08 | 
        (17) 43 же вроде     | |||
| 22
    
        palsergeich 21.08.19✎ 00:08 | 
        (21) Из классики (автостопом по галлактике) - 42     | |||
| 23
    
        palsergeich 21.08.19✎ 00:09 | ||||
| 24
    
        rsv 21.08.19✎ 09:18 | 
        (0) в движке 1с можно работать с тз запросом.
 При этом она все равно должна быть представлена ... Временной таблицей. Так что на выходе все едино | |||
| 25
    
        kolts23381 21.08.19✎ 13:22 | 
        В принципе примерно понятно что к чему. Если таблица очень  большая,то нужно какое то время чтоб получить ее из базы данных. С другой стороны если это тз она будет занимать много памяти. 
 А что насчет обращения ко временным таблицам в цикле? | |||
| 26
    
        VladZ 21.08.19✎ 13:32 | 
        (0) Давай конкретный пример. Несешь какой-то поток сознания - а по делу ни слова не сказал.     | |||
| 27
    
        H A D G E H O G s 21.08.19✎ 13:33 | 
        (25) В принципе понятно, что вы ничего не поняли.     | |||
| 28
    
        Cyberhawk 21.08.19✎ 13:41 | 
        (14) Тогда не ясно, о каких параллельных ФЗ речь, если МВТ никак не сериализуется     | |||
| 29
    
        novichok79 21.08.19✎ 13:47 | 
        без гугла, обход таблицы значений средствами 1С срабатывает быстрее, чем загрузка этой таблицы в МВТ и какие-то манипуляции чисто с ней. 
 при помещении таблицы значений в МВТ, сервер предприятия 1С преобразует таблицу в запрос вида insert values, и потом грузит это дело на SQL сервер, а потом получает результат запроса, грузит его в память сервера предприятия 1С. а если дрочить таблицу в памяти, то этих обменов жидкостями с SQL сервером удастся избежать. | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |