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

  • Home
  • SEARCH
  • 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

Ask A Question

Stats

  • Questions 159k
  • Answers 159k
  • 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
  • Editorial Team
    Editorial Team added an answer As it turns out it was a bug inside WPF… May 12, 2026 at 11:28 am
  • Editorial Team
    Editorial Team added an answer I prefer recording audio using the waveIn* API functions (waveInOpen… May 12, 2026 at 11:28 am
  • Editorial Team
    Editorial Team added an answer As the mako homepage points out, Mako's advantages are pretty… May 12, 2026 at 11:28 am

Related Questions

Lets say I have the following 2 tables in a database: [Movies] (Scheme: Automatic)
I would like the users be able to create their accounts (which stores the
im in the beginning of the complete restyle of an my web application, and
I have 1 table filled with articles. For the purpose of this post, lets

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.