Omg it’s sooo daammmn slooow it takes around 30 seconds to bulk - insert 15000 rows

Disabling indices doesn’t help. Database log is at SIMPLE. My table is 50 columns wide, and from what i understand the main reason is the stupid limit of 2100 parameters in query in ODBC driver. I am using the . NET SqlBulkCopy. I only open the connection + transaction once per ~15000 inserts

I have 50 millions rows to insert, it takes literally days, please send help, i can fucking write with a pen and paper faster than damned Microsoft driver inserts rows

  • kSPvhmTOlwvMd7Y7EOP
    link
    fedilink
    arrow-up
    1
    ·
    4 months ago

    I timed the transaction and opening of the connection, it takes maybe a 100 milliseconds, absolutely doesn’t explain ghe abysmal performance

    Transaction is needed because 2 tables are touched, i don’t want to deal with partially inserted data

    Cannot share the code, but it’s python calling .NET through “clr”, and using SqlBulkCopy

    What do you suggest i shouldn’t be using that? It’s either a prepared query, with thousands of parameters, or a plain text string with parameters inside (which admittedly, i didn’t try, might be faster lol)

    • RagingHungryPanda@lemm.ee
      link
      fedilink
      arrow-up
      3
      ·
      edit-2
      3 months ago

      One thing to know about transactions is that they track data and then write it. It’s not the opening that slows it down. I have a question though, what is your source data? Do you have a big CSV for something? Can you do a db to db transfer instead? There’s another tool called the BCP utility.

      Edit: SQL server/ssms have tools for doing migrations and batch imports