Each time you insert or delete a record, the database server has to ensure that indexes are properly maintained, along with a *lot* of housekeeping. Since each SQL statement has to be processed one at a time, most of the housekeeping is redundant and wasted.
If you want to get it to be as fast as possible, then you should split your file into two: The first one would simply be a formatted list of the records you want inserted into the database. Then you can insert the data using BCP (a bulk record loader).
The second file should simply be a list of primary keys that you want to delete. Create a temporary table to hold them, and use BCP to insert the keys into the list. Then you can delete all the records using a single SQL statement, something like:
delete the_table where the_key in ( select the_key from temporary_table )
Then, of course, you can drop your temporary table.
With a reasonable database server and table definitions, I'd expect you to get the time to less than a half hour.
...roboticus
In reply to Re: How can I improve the sql statements applying efficiency
by roboticus
in thread How can I improve the sql statements applying efficiency
by littlehorse
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |