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

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 14, 20262026-06-14T07:46:18+00:00 2026-06-14T07:46:18+00:00

This has probably been asked before, but googling for keywords like IN doesn’t work

  • 0

This has probably been asked before, but googling for keywords like “IN” doesn’t work very well.

This is my query:

UPDATE tblCustomer SET type = 2 
WHERE idcustomer                                
IN (SELECT fidcustomer1
    FROM tblorder                   
     UNION                      
    SELECT fidcustomer2
    FROM tblorder                   
   )                                

To break it down: I want to set the type (just an int) of all customers to 2 for all customers that appear in the order-table, in one of either column.

On my test data, none of these tables contain more than a few hundred rows, yet the query runs for many minutes (even without the UNION, that doesn’t seem to make much of a difference), apparently re-doing the inner query once per row in customer. I could obviously rewrite it into a single SELECT DISTINCT(id), followed by a few hundred single-row updates and do the logic in whatever language I use for my ODBC-access, but that’s just a hack.

How can I rewrite this properly?

Addendum: The table I want to update contains a lot of relatively large BYTEA blobs, a few MB per row. They are set to Storage External or Extended, but I wonder if that could make the sequential scans slow. All updates seem to take a long time, not just this one.

  • 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-14T07:46:19+00:00Added an answer on June 14, 2026 at 7:46 am
    -------------------------------
    -- Use two EXISTS:
    -------------------------------
    UPDATE tblCustomer tc
    SET type = 2
    WHERE EXISTS (
        SELECT *
        FROM tblorder ex
        WHERE ex.fidcustomer1 = tc.idcustomer
        )
    OR EXISTS (
        SELECT *
        FROM tblorder ex
        WHERE ex.fidcustomer2 = tc.idcustomer
        );
    
    -------------------------------
    -- or combine the two EXISTS::
    -------------------------------
    UPDATE tblCustomer tc
    SET type = 2 
    WHERE EXISTS (
        SELECT *
        FROM tblorder ex
        WHERE ex.fidcustomer1 = tc.idcustomer
        OR ex.fidcustomer2 = tc.idcustomer
        );
    

    My gut feeling is that the first version (with two separate exists) will perform better, because the executor could short-circuit if one of the existss would yield True. That would avoid the removal-of-duplicates phase (and probably sorting), which is inherent to the UNION construct.

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

Sidebar

Related Questions

I know this has probably been asked before but for my problem I cannot
I know this probably has been asked before but I am having issues with
this question has probably been asked before, but i'm stuck and i've tried a
This probably has been asked before but all I can find are questions regarding
This has probably been asked before, but I can't find a good way of
This has probably been asked before on SO, but I was unable to find
I know this has probably been asked before, but I can't find it with
This probably has probably been asked before, but I couldn't find anything relevant. Would
Sorry I know this question has probably been asked before, but do you know
I know this has probably been asked before but I can't find a specific

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.