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 7938297
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 3, 20262026-06-03T22:46:13+00:00 2026-06-03T22:46:13+00:00

I executed an update statement along the following lines yesterday: UPDATE MainTable Set SomeField

  • 0

I executed an update statement along the following lines yesterday:

UPDATE MainTable
Set SomeField = SubsetTable.SomeField
where MainTable.MainTableKey = SubsetTable.MainTableKey

where SubsetTable is a subset of MainTable and has the same Primary Key field. MainTable has roughly 200m records, SubsetTable has 5m records. MainTableKey is a GUID.

Both of these table have a clustered index on MainTableKey.

When I executed this query the first time it took a whopping 14 hours.

Then I added a non-clustered index to MainTableKey on both tables. Now it takes 30 minutes.

Does anyone have any ideas on why the performance gain would be so dramatic?

  • 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. Editorial Team
    Editorial Team
    2026-06-03T22:46:14+00:00Added an answer on June 3, 2026 at 10:46 pm

    I bet if you look at the execution plans:

    The first query is a merge join which involved reading both tables completely.

    200M rows + 5M rows = 205M rows.
    205M rows / 14 hours = 4067 rows per second.
    

    The second query is a nested loop join which reads the whole small table and seeks into the large table for each small table row.

    5M + 5M rows = 10M rows.
    10M rows / 40 minutes = 4166rows per second.
    

    That these rates are approximately equal, supports my theory about which rows are read.

    You don’t have to guess: Run the queries with SET STATISTICS IO ON, and/or look at the execution plans.

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

Sidebar

Related Questions

I have to execute the following query in Android SQLite UPDATE player SET rank=rank+1
I am trying to execute the following query. update share set holder = 22
How to know whether a sql Update statement executed successfully or failed ? I
I'm using following update or insert Oracle statement at the moment: BEGIN UPDATE DSMS
Good day! I'm trying to run the same update statement with the same params
Imagine the following sql query: UPDATE MYTABLE SET COL2 = (SELECT COL2 + 1
I executed the following statement but it only updates the price rows of all
I have a problem when trying to execute this update statement (below) using C#
I have three update statements to be executed in PHP, i am getting the
This is my Python code - cursor.execute(UPDATE tasks SET task_owner=%s,task_remaining_hours=%s, task_impediments=%s,task_notes=%s WHERE task_id=%s, (new_task_owner,new_task_remaining_hours,new_task_impediments,

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.