Estou tentando entender melhor as chaves primárias, como usá-las efetivamente no design da tabela e nas consultas.
Primeiro, as próprias chaves primárias são usadas nas cláusulas WHERE? Por exemplo, se eu tiver uma tabela de nomes e a chave primária estiver configurada como 'A' para todas as entradas com sobrenome começando com 'A', 'B' para todos os sobrenomes começando com 'B', etc. melhor prática para ter algo como:
WHERE pk_field = 'B' AND last_name = 'Bluthe'
Em segundo lugar, quero entender como uma chave primária de incremento automático seria melhor para desempenho do que apenas algo como:
SELECT last_name FROM names WHERE last_name = 'Bluthe'
Se a chave primária para este registro for 1247, seria
WHERE pk_field = 1247
ser muito melhor. A busca ainda não passaria por cada registro naquela coluna até encontrar uma correspondência?
Em primeiro lugar, concordo com o comentário de John M à sua pergunta. Você deve fazer algumas leituras sobre os conceitos de banco de dados.
Você provavelmente interpreta mal entre acessar seus dados e como seus dados são organizados no banco de dados. Quando você precisar encontrar nomes cujo last_name seja igual a 'Bluthe', basta fazê-lo:
É isso. Você não precisa se preocupar com a chave primária. O que você deve se preocupar é se o last_name está indexado.
Quando falamos de índice, então entra a chave primária. A chave primária é a maneira de endereçar uma linha em uma tabela. Portanto, PK deve ser único. A maneira como você define a chave primária simplesmente não funcionará. O índice será construído em cima do PK. Digamos que você tenha a tabela de nomes da seguinte forma, assumindo o uso de inteiro como pk
Em seguida, criamos o índice em last_name. O índice criado ficará assim:
Ao pesquisar last_name, o banco de dados utilizará esse índice para localizar o registro real. Pesquisar 'Bluthe' resultará em pk_field = 3, que é então usado para buscar o registro real da tabela de nomes.
Para mim, a melhor prática para chave primária é barata para comparar (usando tipos de dados baseados em número inteiro), agrupados com valores de incremento automático. Com valor de incremento automático não precisamos nos preocupar quando mais de uma transação for inserida na mesma tabela ao mesmo tempo. A chave primária agrupada organizará a linha física na tabela de acordo com seu valor de chave primária. Assim, a pesquisa com base na chave primária será muito rápida.
HTH