2017-08-19 18:24 GMT-03:00 Neto pr <[email protected]>: > Ola pessoal > > Sou novo na utilização de PostgreSQL, e tenho a seguinte duvida. > > Segundo alguns autores, ao se criar uma chave primaria, na verdade o > SGBD cria um índice primário/único no caso de chave primaria. Mas e no > caso da chave estrangeira, o SGBD indexa a coluna Fk também? >
Ele faz a criação de index apenas para PK realmente, e uma coisa que você precisa se preocupar, além de indexar a FK, é que o tipo de dados da PK e da FK sejam os mesmos, senão o index não será utilizado para casos em que o banco precisa checar os valores das chaves. Já tive grandes problemas com isso, e é uma coisa que muitas vezes é negligenciada e dificil de identificar. > > Pergunto isso pois criei a seguinte chave estrangeira em um banco de > testes (do benchmark TPCH): > > ALTER TABLE ORDERS ADD FOREIGN KEY (O_CUSTKEY) REFERENCES > CUSTOMER(C_CUSTKEY); > > Apos tentei criar um índice secundário btree na tabela ORDERS desta forma: > CREATE INDEX indice_custkey_customer on ORDERS (O_CUSTKEY); > > Achei que o PostgreSQL Não iria permitir isso, pois pensei que a > coluna O_CUSTKEY já estava indexada (pela chave estrangeira), mas o > PostgreSQL aceitou o índice secundário. > > Alguém saberia explicar SE ao criar uma chave estrangeira, é criado ou > não um índice. > Outro dia estava vendo um plano de execução, e no plano tinha o uso de > uma chave estrangeira para recuperar registros, por isso também a > dúvida. > > []`s Neto > <div id="DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2"><br /> <table > style="border-top: 1px solid #D3D4DE;"> > <tr> > <td style="width: 55px; padding-top: 18px;"><a > href="https://www.avast.com/sig-email?utm_medium=email& > utm_source=link&utm_campaign=sig-email&utm_content=webmail" > target="_blank"><img > src="https://ipmcdn.avast.com/images/icons/icon-envelope- > tick-round-orange-animated-no-repeat-v1.gif" > alt="" width="46" height="29" style="width: 46px; height: 29px;" > /></a></td> > <td style="width: 470px; padding-top: 17px; color: #41424e; > font-size: 13px; font-family: Arial, Helvetica, sans-serif; > line-height: 18px;">Livre de vírus. <a > href="https://www.avast.com/sig-email?utm_medium=email& > utm_source=link&utm_campaign=sig-email&utm_content=webmail" > target="_blank" style="color: #4453ea;">www.avast.com</a>. > </td> > </tr> > </table> > <a href="#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2" width="1" > height="1"></a></div> > _______________________________________________ > pgbr-geral mailing list > [email protected] > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
