как быстрее (лучше?) записать на SQL

  1. 9 г. назад

    ТабТоварСпецификация это просто табличка и именем товара остатком и ценой.

    ЗаписатьВБазу() просто

       Connection.Open(СокрЛП(СтрокаСоединения));
         Command.ActiveConnection   = Connection;
         Command.CommandText = ЗапросSQL;
         RecordSet = Command.Execute();
    
    	Для Каждого Колонка Из ТабТоварСпецификация.Колонки Цикл
    				
    				
    				Если Колонка.имя="ПП" или  Колонка.имя="Печатать1"  Тогда
    					продолжить;
    				КонецЕсли; 
    				СписокКолонок=СписокКолонок+"["+ЗаменитьИМя(Колонка.имя)+"], ";
    				
    				СписокДанных=СписокДанных+"'" +ТекущаяСтрока[Колонка.Имя]+"', ";
    			КонецЦикла; 
    			
    			
    			СписокКолонок= "(Id, "+СписокКолонок+" [магазин] ) ";
    			СписокДанных="VALUES ('"+ИдСтроки+"' , "+СписокДанных+"'"+ТоварСпецификацияМагазин.ФЛ_НомерМагазина+"' ) ";
    			ЗапросSQL= "insert into DataExchange.dbo.MainExchage "+СписокКолонок+СписокДанных;
    			
    			ЗаписатьВБазу(ЗапросSQL);  
    

    Как записывать лучше? Как сейчас по каждому товару или Собрать один большой запрос?
    Сейчас пишет в SQL каждый товар отдельно.

    Ответы: (8) (11) (14)
  2. писать лучше пакетом

    это сторонняя СУБД?

    Ответы: (2)
  3. (1) DataExchange.dbo.MainExchage ? Да.

    писать лучше пакетом

    а может там ограничение на Запрос по SQL?

    Ответы: (3)
  4. Леопольд Роскошный а может там ограничение на Запрос по SQL?

    что за ограничение?

    Ответы: (4)
  5. (3) я сам не знаю , но что то слышал.

    ты думаешь Запрос может быть бесконечным??

    "insert into DataExchange.dbo.MainExchag
    "insert into DataExchange.dbo.MainExchage
    "insert into DataExchange.dbo.MainExchage
    "insert into DataExchange.dbo.MainExchage
    "insert into DataExchange.dbo.MainExchage.....
    Ответы: (5)
  6. Леопольд Роскошный ты думаешь Запрос может быть бесконечным??

    пакетный

    q1
    ;
    q2
    ;
    q3

    Ответы: (6)
  7. (5) тогда чем он отличается он многих??

    может там тоже ограничение на количество пакетов..
    хотя попробую.

    Ответы: (7)
  8. Леопольд Роскошный тогда чем он отличается он многих??

    должен быстрее отработать

  9. (0) один большой работает быстрее

  10. Если тип хранения данных транзакционный, то лучше записывать данные одной транзакцией. Можешь начать транзакцию, записать данные по одной, завершить транзакцию, будет так же медленно как если записать все данные одним пакетом одной транзакцией, но все же быстрее чем записывать по одной разными транзакциями.
    Если не транзакционный, то без разницы как записывать, будет одинаково быстро.
    Но наверняка у тебя первый вариант.

  11. Быстрее всего отловить запрос выборки и и сделать insert из select`a

  12. (0) записать все эти insertы в текстовый файл. А потом открыть этот файл из sql management studio и там запустить

    Ответы: (12)
  13. (11) а если там миллион строк?

    Ответы: (13)
  14. (12) тогда
    Command.CommandText = ЗапросSQL;
    RecordSet = Command.Execute();
    тем более упадет.
    А файлов можно несколлько сделать, если там чего

  15. (0) имхо, быстрее и лучше через BULK insert
    но там свои тараканы.

или зарегистрируйтесь чтобы ответить!