Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 100535
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 11, 20262026-05-11T00:35:54+00:00 2026-05-11T00:35:54+00:00

I have a table that has about 1/2 million records in it. Each month

  • 0

I have a table that has about 1/2 million records in it.

Each month we get about 1/2 million more records to import. These are currently shoved into another table in the DB, but will eventually be loaded directly from a txt file. For each of these new records, I have to determine if we have that record already, and if we don’t, then it needs to be inserted. However, if we do have the record it needs to be updated. There is logic for these updates contained the C# code.

A C# command line program is handling the importing of this new data, and so right now there are 1/2 million select statements – one for each record. Then, a bunch (again about 1/2 million) of insert and update statements are generated and ran against the database.

It takes about 6 hours for this to run on my workstation. Do you have any ideas on how to speed it up? I need to run through about 60 of these large imports to bring the database up to the current month, and then load the new data once a month.

I think one area that could be improved is the 1/2 million select statements. Perhaps I could issue one select statement to get all the rows, and store them in memory, and search it. Could I use an List for this, or is there a better class? I’ll have to search based on two properties (or DB fields).

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. 2026-05-11T00:35:54+00:00Added an answer on May 11, 2026 at 12:35 am

    Yes, move the logic to a single stored proc that will do a Bulk Insert into a temp table (without Logging, and then process all the records in the temp table in two separate statements… One Update for all the records that do exist in the desti Table, and One Insert for all those that do not

       Update DestTable Set        ColName = T.ColName,        [repeat for all cols]     From TmpTable T Join DestTable D On D.Pk = T.Pk      Insert DestTable(ColList)     Select [ColList]     From TmpTable T     Where Not Exists (Select * From DestTable                       Where pk = T.Pk) 

    If this creates transactions too large for your transaction log, break it up into smaller chunks

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 62k
  • Answers 62k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • added an answer I would suggest that what you really want to do… May 11, 2026 at 10:12 am
  • added an answer One way to do it in the same site would… May 11, 2026 at 10:12 am
  • added an answer I'm cannot recall how I found stumbled across Message Inspectors,… May 11, 2026 at 10:12 am

Related Questions

I have a table that has about 1/2 million records in it. Each month
I have a table that has redundant data and I'm trying to identify all
I have a table that has an insert trigger on it. If I insert
I have a table that has a processed_timestamp column -- if a record has
I have a table that has a primary key that's an INT... I have
I have a table that has 8 million records, with many fields, including lat/long
I have a pictures table that has the following columns: PICTURE_ID int IDENTITY(1000,1) NOT
Suppose I have a database table that has a timedate column of the last
I have a table in MySQL that has 3 fields and I want to
Suppose I have a table called Companies that has a DepartmentID column. There's also

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.