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

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 23, 20262026-05-23T08:36:48+00:00 2026-05-23T08:36:48+00:00

Do I have to create an index on columns referenced in Joins? E.g. SELECT

  • 0

Do I have to create an index on columns referenced in Joins?
E.g.

SELECT
  *
FROM
  left_table
INNER JOIN
  right_table
ON
  left_table.foo = right_table.bar
WHERE
  ...

Should I create indexes on left_table(foo), right_table(bar), or both?

I noticed different results when I used EXPLAIN (Postgresql) with and without indexes and switching around the order of the comparison

(right_table.bar = left_table.foo)

I know for sure that indexes are used for the left of the WHERE clause but I am wondering whether I need indexes for columns listed in ON clauses.

  • 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-05-23T08:36:48+00:00Added an answer on May 23, 2026 at 8:36 am

    It depends on your where condition, but brief answer is yes.

    Usually left table would have this column as primary key which is an index by default.
    The second column would be a foreign key and it is likely your queries will benefit from the index added for this column. You need to analyze your query to tell for sure if you need the index or not.

    Let say the query is like this:

    SELECT  *
    FROM  left_table
       INNER JOIN right_table ON
          left_table.foo = right_table.bar
    WHERE left_table.SomeField = 1
    

    Index on right_table.bar will definitely be used.

    On the other side:

    SELECT  *
    FROM  left_table
       INNER JOIN right_table ON
          left_table.foo = right_table.bar
    WHERE right_table.SomeField = 1
    

    In this case index on right_table.bar will not be used at all, but index on left_table.foo will.

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

Sidebar

Related Questions

I have a view like this: CREATE VIEW MyView AS SELECT Column FROM Table
If I have a table column with data and create an index on this
I have created an index on my table like this: CREATE INDEX index_typ_poplatky ON
I have a directory with PDF files that I need to create an index
i have two files:(localhost/template/) index.php template.php each time when i create an article(an article
I have a script which returns 5 columns from a php result. I am
CREATE VIEW [dbo].[MyView] ([ID],[VisitDate],[StartDate] ,[EndDate]) WITH SCHEMABINDING AS SELECT id, VisitDate,dateadd(dd,-10,VisitDate)persisted, dateadd(dd,10,VisitDate)persisted FROM dbo.Visits
I have create my own NSOpenGLView class, right now the data that i want
I have create name range on sheet A so I need to use this
i have create a form (so it's PHP and HTML hybrid-code). it has ability

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.