Entiendo, y creo armas una variable con 10 mil líneas de insert into y luego la mandas a la base de datos, lo que sucede con esto es que se genera una transacción gigantesca que hacer que la siguiente línea aún guarda información de la transacción anterior, te recomiendo que entre cada línea pongas un GO, ejemplo:
Código SQL
[-]INSERT INTO tabla (campos) VALUES ("datos")
GO
INSERT INTO tabla (campos) VALUES ("datos")
GO
INSERT INTO tabla (campos) VALUES ("datos")
GO
También que desactives la transacción desde delphi, con esto debería mejorar notablemente.
Saludos.