Desktop
Website
Multimedia
Database
Security
Enterprise
Вопрос : Просто заявление вставки очень медленное
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 - консультации тренировки?