Chave primaria almenta a velocidade de consulta?

tenho um banco com mais de 5 milhões de linhas/registros se colocar chave primaria na tabela o q é o correto aumenta a velocidade de pesquisa consideravelmente/vale apena colocar nessa situação ? vlw.

Se a busca for feita pela chave, sim. Também seria bom indexar os campos onde os dados são ordenados e onde outras buscas são feitas.

Também veja se seu banco não possui recursos de segmentação da tabela. Pode ser interessante separa-la em várias tabelas com tantos registros.

De qualquer forma, a chave primária é importante para joins. É sempre bom te-la.

posso definir uma coluna como sendo a chave primaria uma coluna como idade ‘mesmo se tiverem dados iguais’ ? não né?

Aumenta sim, pois quando criamos uma chave primaria, essa chave passa a ser registrada fisicamente de forma diferente dos outros registros, então, o banco de dados armazena as informações em folhas e nós de uma árvore binária, isso quando o banco automaticamente cria índices do tipo clustered para uma chave primária.

Não pode definir.

Uma chave primária necessariamente seus valores devem ser diferentes. Lembre-se que o conceito de chave primária é para manter a integridade de uma tabela, portanto, ela é a coluna de identificação do registro na tabela. Você só poderá ter uma restrição PRIMARY KEY por tabela.

O que se pode fazer é criar índices que permitem valores repetidos ou não. Mas lembre-se que isso é algo diferente de uma chave primária. Uma tabela só pode ter um índice do tipo clustered, mas pode ter (a depender do banco) vários índices non-clustered. O intúito do índice é aumentar a performance nas operações de consulta ao banco, e pode, diminuir a performance para escrita, já que envolve estruturação dos registros da tabela.

O conceito de chave primária é ser um identificador único do registro. Logo, essa situação não se pode permitir numa chave primária. Indo mais diretamente ao ponto, a chave primária deve existir quando há a necessidade de relacionar um registro de uma tabela pai com um ou mais registros de uma ou mais tabelas filho. Se o caso é aumentar velocidade de pesquisa, é suficiente criar índices sobre os campos que servirão de filtro nas pesquisas. Além dos conselhos que o vini godoy deu.

O que eu vejo que confunde a galera é que os bancos, ao criar uma chave primária, já criam um índice implicitamente. Mas o fato é que uma coisa é uma coisa, e outra coisa é outra coisa…

blz , se colocar chave primaria mesmo não fazendo a consulta por ela , o que vc’s acham.: aumenta ou não vai mudar a velocidade de consulta . Obrigado.

Ademilton,

Só tome cuidade com o conceito de “registro da tabela pai com a tabela filho” pois na verdade, uma integridade relacional do tipo chave estrangeira não quer dizer relação de pai com filho, isso não é herança, mas sim, integridade entre tabelas distintas.

O que pode ocorrer é o “self join” que é o caso de uma tabela ter uma chave primária e estrangeira apontando para ela mesma. Então, nesse caso, podemos falar de pai e filho.

Mas o que você disse sobre confundir a chave primária com índice é verdade, pois geralmente os bancos criam índices ao criar uma coluna do tipo primary key.

Aumenta no caso se um índice for criado também para essa coluna. O que acontece é que geralmente quando se cria uma chave primária um índice é criado, mas isso não é regra geral, e na verdade, pode-se até mudar a natureza do índice na criação da chave primária.

O que aumenta velocidade de consulta não é a chave primária, mas sim, o índice associado.