Multicolumn Primary Key

Поиск
Список
Период
Сортировка
От Thomas F.O'Connell
Тема Multicolumn Primary Key
Дата
Msg-id 38891E66-FB6F-11D8-A844-000D93AE0944@sitening.com
обсуждение исходный текст
Ответы Re: Multicolumn Primary Key  (Martijn van Oosterhout <kleptog@svana.org>)
Список pgsql-general
We've got a table that has a definition as follows:


CREATE TABLE linking_table (

    fk        int8 REFERENCES source_table( pk1 ),

    value    int8,

    PRIMARY KEY( fk1, value )

);


I would've thought that the multicolumn primary key would behave as a
multicolumn index is supposed to behave per


http://www.postgresql.org/docs/7.4/static/indexes-multicolumn.html


where the behavior of the index cascades from the left rightward
across any columns specified in WHERE.


But a query like


SELECT COUNT( * ) FROM linking_table WHERE fk = '42';


yields a sequential scan.


If I add an index to fk, then the same query yields an index scan, as
I would expect. Is this because, according to the docs, a primary key
"<bigger><bigger>is merely a combination of
</bigger></bigger><fontfamily><param>Courier</param><x-tad-bigger>UNIQUE</x-tad-bigger></fontfamily><bigger><bigger>
and
</bigger></bigger><fontfamily><param>Courier</param><x-tad-bigger>NOT
NULL"</x-tad-bigger></fontfamily>?


If so, then why do primary keys afford index scans of single columns
specified as primary keys?


This is in postgres 7.4.5, btw.


-tfo
We've got a table that has a definition as follows:

CREATE TABLE linking_table (
    fk        int8 REFERENCES source_table( pk1 ),
    value    int8,
    PRIMARY KEY( fk1, value )
);

I would've thought that the multicolumn primary key would behave as a
multicolumn index is supposed to behave per

http://www.postgresql.org/docs/7.4/static/indexes-multicolumn.html

where the behavior of the index cascades from the left rightward across
any columns specified in WHERE.

But a query like

SELECT COUNT( * ) FROM linking_table WHERE fk = '42';

yields a sequential scan.

If I add an index to fk, then the same query yields an index scan, as I
would expect. Is this because, according to the docs, a primary key "is
merely a combination of UNIQUE and NOT NULL"?

If so, then why do primary keys afford index scans of single columns
specified as primary keys?

This is in postgres 7.4.5, btw.

-tfo

В списке pgsql-general по дате отправления:

Предыдущее
От: John Sidney-Woollett
Дата:
Сообщение: Re: Hebrew support -- please help !
Следующее
От: Jeff
Дата:
Сообщение: Re: cannot reach http:/archives.postgresql.org