MS SQL INSERT

  1. 3 г. назад

    кто шарит 1000 записей INSERT за 30 секунд это долго, быстро или нормально?

  2. Это пц как долго.

    Ответы: (2)
  3. Bumer Это пц как долго.

    Какие варианты оптимизации? что можно сделать по простому? Запрос судя по всему не оптимизировать. Там особо условий никаких нет.

    Ответы: (3) (4)
  4. 08.10.2020 09:32:27 отредактировано Фёдор14

    (2). BULK INSERT

  5. (2) скорее всего индекс какой то есть на инсертиуемой таблице. Задержка идет на пересчете индекса. Особенно если таблица большая.
    Если есть постоянно необходимость инсертить большими объемами, то надо инсертить этот объем в стеджинговую таблицу - временная таблица, свободная от индексов, которую после операции зачищают.
    Потом одной операцией перенести все из стейджинга в таблицу с индексом. Тогда индекс будет пересчитываться один раз, а не после каждого инсерта

    Ответы: (6)
  6. Или триггеры

  7. (4) + 100
    В виртуальную табличку, пот ом в базу. Но для каждого случая тестить надо.

  8. Через что инсертишь? АДО очень небыстрая штука. Через внешний источник будет быстрее намного.

    Ответы: (8)
  9. ТеньД Через что инсертишь? АДО очень небыстрая штука. Через внешний источник будет быстрее намного.

    через адо было 90 сек 1000 записей. Начали через файл, стало 30 сек.

    Ответы: (9) (11)
  10. (8). Можешь кусок кода выложить, каким образом Insert проходит?

  11. 08.10.2020 16:42:41 отредактировано Hans
    Если ВыгрузкаДанныхВКаталог Тогда				
    	СохранитьЗапросСКЛВТекстовыйФайл(ТекстМассива, "INSERT");		
    Иначе
    				
          //Соединение.BeginTrans();
         Соединение.Execute(ТекстМассива,,128);
        //Соединение.CommitTrans();
    
    КонецЕсли; 

    ничего особенного вроде.

  12. Hans через адо было 90 сек 1000 записей. Начали через файл, стало 30 сек.

    Верным путем идете товарищи. Через внешний источник будет еще быстрее

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