There is something else going on here. What is the explain plan for the query? What are the timings for each method? Do you have an insert trigger on the test_tab table? Something is causing this to not look right. The SQL INSERT should always be faster. If there is a lot of sorting, one single large insert might take a lot of resources compared to many smaller inserts. But the amount of overhead to resolve the query could be minimized with some tuning, thus making the SQL INSERT faster.