Я просто пытаюсь импортировать данные в базу данных (Sql) из набора данных, но это немного медленнее, когда я пытаюсь импортировать 70000 строк. Я что-то делаю неправильно или пропал? Не могли бы вы дать мне несколько советов, как я могу сделать это лучше?Медленная вставка данных на Sql
Вот мой asp.net код:
ArtiDB entity = new ArtiDB();
int grid = 50;
foreach (string item_kisiler in kisiler)
{
if (item_kisiler == "")
continue;
if (Tools.isNumber(item_kisiler) == false)
continue;
else
{
string gsm1 = item_kisiler;
if (gsm1.Length > 10)
gsm1 = gsm1.Substring(1, 10);
entity.veriaktar(gsm1, gg, grid);
}
}
Это мой магазин prosedure:
alter proc veriaktar
(
@gsm1 nvarchar(50)=null,
@userid uniqueidentifier,
@grupid int = 0
)
as
begin
Declare @AltMusID int
if not exists (select * from tbl_AltMusteriler with (updlock, rowlock, holdlock) where [email protected] and [email protected])
begin
insert into tbl_AltMusteriler (Gsm1,UserId)
values (@gsm1,@userid)
Set @AltMusID = scope_identity()
end
else
begin
Set @AltMusID = (select AltMusteriID from tbl_AltMusteriler with (updlock, rowlock, holdlock) where [email protected] and [email protected])
end
if (@grupid != 0)
begin
if not exists (select * from tbl_KisiGrup with (updlock, rowlock, holdlock) where [email protected] and [email protected])
begin
insert into tbl_KisiGrup values(@grupid,@AltMusID)
end
end
end
go
Похоже, вы пытаетесь сделать 70 000 отдельных вставок. Откуда их взяли данные? –
Я просто заполняю набор данных с листа excel, но это не заняло много времени ... – cooolstaff
Единственная «неправильная» вещь, которую я вижу, это попытка вставить столько строк сразу. Как насчет того, чтобы разделить это на куски или использовать фоновое обслуживание? – rcdmk