Вопрос : Просто заявление вставки очень медленное

Hi люди,

I получают очень просто заявление вставки, следующим образом

Insert в
select 0 MyTable (StringID, StringText),
select 1 СОЕДИНЕНИЯ br/> N'123452.46093750'<,
select 2 СОЕДИНЕНИЯ br/> N'468330.90625000'<,
select 3 СОЕДИНЕНИЯ br/> N'152484.99609375'<,
select 4 СОЕДИНЕНИЯ br/> N'476937.99609375'<,
select 5 СОЕДИНЕНИЯ br/> N'30 D6-5FFC'<,
select 6 СОЕДИНЕНИЯ br/> N'AE79-9EED'<,
select 7 СОЕДИНЕНИЯ br/> N'10.5.0.75'<,
select 8 СОЕДИНЕНИЯ br/> N'00-21-9B-01-5C-C4'<,
select 9 СОЕДИНЕНИЯ br/> Writer'< документа N'Microsoft XPS,
select 10 СОЕДИНЕНИЯ
N'ActiveReports 6 ',
select СОЕДИНЕНИЯ br/> N'6.0.2250.0'< 11, СОЕДИНЕНИЯ

The br/> N'24'< ...... продолжают для 1800 показателей, и каждое заявление сломленно вне в серии 100, как раз поэтому я не ударяю пределы на размере заявления или номер вставки unions.

This принимает 4 секунды для того чтобы ввести 1800 рядков, почему это настолько медленно? (Громкие слова MS на около TPC вычисляют etc, уверенно самую последнюю и само больш smogл управлять больше чем 450 рядками в секунду!!)таблица

The не имеет никакие индексы, никакие отношения:

создает таблицу MyTable
(
StringID int нулевое,

StringText nvarchar (4000) нулевых)

I имейте изменение база данных внести в журнал к «просто», свой вариант 2008 проявителя Sql на коробке сердечника 2.66 квада с RAM 4GB. Ничего еще бежит на той коробке кроме того что визуально студия 2010.

I имеет судимые ") значения (" вместо отборного, и меня имейте судимо новой основанный запятым синтаксис вставки sql 2008 множественный - все такие же идеи

Any? Что-нибыдь попытаться?
class=

Ответ : Просто заявление вставки очень медленное

Здесь будет переустановит DB перед каждым испытанием.
Все испытания 10000 вставок.

freeproccache dbcc
dropcleanbuffers dbcc
установите nocount дальше
ИДИТЕ
;
упадите таблица MyTable3
ИДИТЕ
      Создайте таблицу MyTable3
      (
            StringID int нулевое,
            Null StringText nvarchar (4000) не
      )
;
=========================
test1 - форма соединения, одно большое заявление (10000 снятых одних), произведенное using внизу и немного ручных фишек

объявите @i int установленное @i=1
пока @i <� 10001="">начинает
напечатайте «выберите «+right (@i, 10)+», ''' +convert n (varchar (максимально), newid ())+ соединение '''»;
установите @i=@i+1
конец
=========================

введите MyTable3
выберите 1, соединение N'A0B8022B-CFE9-43C9-97E5-DE89822AC32F
выберите 2, соединение N'F87C8670-1339-458E-8F1C-C2E9B717F4AA
выберите 3, соединение N'35 ACFFFC-52CF-4805-8C30-A4EB41F3A218
..........
выберите 10000.

Время - 7 убитых minutes+,

=========================
test2 - соединение ВСЯ форма
=========================

Время - более быстро чем выше.  ВИД после этого ОПРЕДЕЛЕННЫЙ необходим.  Соединение на своих делает определенное

=========================
test3 - соединение ВСЯ форма, 100 в серию, отделенную мимо;
=========================

Время - даже более быстро.  Поручена и не принимает каждая серия очень регулировать в RAM.  Сверх того, оптимизатор вопроса не тратит много время на длинних вопросах.  Время QO идет вверх степенно для длинних вопросов.

=========================
test4 - truncate таблица, вводит снова (следующ за от test3 без возврата)
=========================

Время - более быстро чем 3. QO не должно сделать любое запланирование, все 100 вопросов [static] приходя от тайника плана

=========================
test5 - using parameterised вставки. QO планирует только одну вставку. Все другие вставки идут планом
Вставки произведенные using

объявите @i int установленное @i=1
пока @i <� 101="">начинает
напечатайте «@a int n значений вставки MyTable3 n sp_executesql exec '' (@a, @b) '', '', @b nvarchar (4000) '', @a='+ справедливо (@i, 10)+», ''' +convert @b=N (varchar (максимально), newid ())+ '''';
установите @i=@i+1
конец
=========================

Принятое время - 6s! Наиболее быстро.

===================

Заключения

(1) оптимизатор вопроса сервера Sql принимает степенно более длиной для того чтобы составить длинне текст вопроса.

(2) большие блоки вставки using соединение или значения (), (), () картины сидят в ВОРОХЕ в памяти, тогда dequeued от ВОРОХА на вставке - неудаче.

(3) Parameterized вопросы хороши.  Улучшайте если вы дозируете их в говорите 10 вставок, то но каждая вставка после этого требовала бы (для примера выше) 20 параметров в вставке 10 серий.

(4) ** Никакое испытание выше, а моя догадка ** Using sp для вставки, например @a usp_insert, @b которое делает вставку и ваш навальный сценарий не формы

usp_insert 1 exec, text'; N'test
usp_insert 2 exec, text'; N'test
etc

будет как быстро как Parameterized вставки using sp_executesql, потому что SP составлен раз только и re-used#.

# - будет источник проблем обнюхивать параметра….
Другие решения  
  •  Как я добавляю кнопки на форме PDF для того чтобы добавить/извлекаю рядки данных?
  •  Шнур ошибки в блоке задвижки?
  •  сколько вариант сервера SQL на одной машине
  •  Внешний вид 2007 не может архивный файл открытой сети сохраненный
  •  Активно директория DNS записывает вопрос
  •  Отчет о доступа 2010 экспорта к CSV с коллекторами?
  •  Прокладчик OCE 9400 не начинает
  •  как добавить десятичное место в формуле в отчете о кристалла seagate
  •  Windows XP и Мичрософт Оутлоок и проблемы установителя Windows
  •  VB6 к VS2010 - консультации тренировки?
  •  
    programming4us programming4us