Many-To-Many Bridge Table Index

Started by Sergei Dubovover 20 years ago3 messagesgeneral
Jump to latest
#1Sergei Dubov
sdubov@gmail.com

Hi guys,

I'd really appreciate if you could clarify this to me. Let's say I have
a table named TABLE_A that is a bridge to many-to-many relationship
between TABLE_B and TABLE_C, as such here is my declaration:

CREATE TABLE table_a (
table_b_id INT4 NOT NULL
REFERENCES table_b ON DELETE CASCADE ON UPDATE CASCADE,

table_c_id INT4 NOT NULL
REFERENCES table_c ON DELETE RESTRICT ON UPDATE CASCADE,

CONSTRAINT table_a_pkey
PRIMARY KEY (table_b_id, table_c_id)
);

This will automatically create a unique index on the primary key.

Well, if I do a query later like:

select * from table_a where table_b_id=1,

will the query use an index? Will this be true when I do join on this table?

Thanks so much,

Serge

#2Peter Eisentraut
peter_e@gmx.net
In reply to: Sergei Dubov (#1)
Re: Many-To-Many Bridge Table Index

Am Donnerstag, 29. September 2005 21:44 schrieb Sergei Dubov:

select * from table_a where table_b_id=1,

will the query use an index? Will this be true when I do join on this
table?

It could use the index, but whether it will depends on the particular data
distribution. The EXPLAIN command is your friend.

--
Peter Eisentraut
http://developer.postgresql.org/~petere/

#3Richard Huxton
dev@archonet.com
In reply to: Sergei Dubov (#1)
Re: Many-To-Many Bridge Table Index

Sergei Dubov wrote:

This will automatically create a unique index on the primary key.

Well, if I do a query later like:

select * from table_a where table_b_id=1,

will the query use an index? Will this be true when I do join on this
table?

Yes to both (if the query plan thinks that is the most efficient way).

Of course a query on "table_c_id" can't use the index.
--
Richard Huxton
Archonet Ltd