Я использую DataAdapter
Batch для вставки на многие ко многим таблицы партия размер = 1000Вставка с помощью хранимой процедуры очень медленно
У меня есть 3 таблицы
- ШКОЛА (ID, Имя)
- СТУДЕНТ (ID, Имя)
- SCHOOL_STUDENT (SCHOOL_ID, student_id)
Я пытаясь вставить около 700K строк таблицы SCHOOL_STUDENT, но это очень медленно я передаю название школы и имя студента к хранимой процедуре
(
@schoolName varchar(100),
@studentName varchar(50)
)
AS
BEGIN transaction
declare @scoolId int,@studentId int
set @scoolId = (select ID from SCHOOL where [SCHOOL_NAME] = @schoolName)
set @studentId = (select ID from STUDENT where STUDENT_NAME = @studentName)
INSERT INTO [dbo].SCHOOL_STUDENT
(SCHOOL_ID,STUDENT_ID)
VALUES
(@scoolId,@studentId)
commit transaction
, но это занимает около 1 часа, чтобы бежать. Как я могу это ускорить, , так как я не знаю school_Id
ни student_Id
заранее, то я должен всегда выбирать их внутри хранимой процедуры. (есть ли лучший способ)
поток приложения сначала вставляет всех учеников, затем вставляют все школы, а затем связывают их в таблице school_student.
Вам, вероятно, понадобятся некоторые индексы на вашей таблице ШКОЛЫ и СТУДЕНТА. Вероятно, один для SCHOOL.Id, SCHOOL.SCHOOL_NAME и STUDENT.ID, STUDENT.NAME. – Romoku
Похоже, что у вас нет индекса, установленного на таблице 'SCHOOL'. – Dai