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

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 11, 20262026-05-11T05:51:42+00:00 2026-05-11T05:51:42+00:00

Lets say I have a simple many-to-many table between tables table1 and table2 that

  • 0

Lets say I have a simple many-to-many table between tables ‘table1’ and ‘table2’ that consists from two int fields: ‘table1-id’ and ‘table2-id’. How should I index this linking table?

I used to just make a composite primary index (table1-id,table2-id), but I read that this index might not work if you change order of the fields in the query. So what’s the optimal solution then – make independent indexes for each field without a primary index?

Thanks.

  • 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-11T05:51:43+00:00Added an answer on May 11, 2026 at 5:51 am

    It depends on how you search.

    If you search like this:

    /* Given a value from table1, find all related values from table2 */ SELECT * FROM table1 t1 JOIN table_table tt ON (tt.table_1 = t1.id) JOIN table2 t2 ON (t2.id = tt.table_2) WHERE t1.id = @id 

    then you need:

    ALTER TABLE table_table ADD CONSTRAINT pk_table1_table2 (table_1, table_2) 

    In this case, table1 will be leading in NESTED LOOPS and your index will be usable only when table1 is indexed first.

    If you search like this:

    /* Given a value from table2, find all related values from table1 */ SELECT * FROM table2 t2 JOIN table_table tt ON (tt.table_2 = t2.id) JOIN table1 t1 ON (t1.id = tt.table_1) WHERE t2.id = @id 

    then you need:

    ALTER TABLE table_table ADD CONSTRAINT pk_table1_table2 (table_2, table_1) 

    for the reasons above.

    You don’t need independent indices here. A composite index can be used everywhere where a plain index on the first column can be used. If you use independent indices, you won’t be able to search efficiently for both values:

    /* Check if relationship exists between two given values */ SELECT 1 FROM table_table WHERE table_1 = @id1   AND table_2 = @id2 

    For a query like this, you’ll need at least one index on both columns.

    It’s never bad to have an additional index for the second field:

    ALTER TABLE table_table ADD CONSTRAINT pk_table1_table2 PRIMARY KEY (table_1, table_2) CREATE INDEX ix_table2 ON table_table (table_2) 

    Primary key will be used for searches on both values and for searches based on value of table_1, additional index will be used for searches based on value of table_2.

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

Sidebar

Related Questions

Lets say I have a simple ecommerce site that sells 100 different t-shirt designs.
I have two vectors with different dimensions. To make it simple,lets say A =
So let's say I have two :has_and_belongs_to_many models that are joined by a simple
I have a simple 1:many aggregate relationship, lets say: public class Parent { public
So lets say I have a table that looks something like this: ItemName ProductType
I have a simple application using ADO.NET EntityFramework using a many-to-many relationship between two
Let's say we have a database with a table that has many other associated
Lets say I have a simple 1D array with 10-20 entries. Some will be
To keep things simple, lets say I have a Node class, each node has
Let's say I have a simple stored procedure that looks like this (note: this

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.