Quando devo usar KEY
, PRIMARY KEY
, UNIQUE KEY
e INDEX
?
Quando devo usar KEY
, PRIMARY KEY
, UNIQUE KEY
e INDEX
?
Respostas:
KEY
e INDEX
são sinônimos no MySQL. Eles significam a mesma coisa. Nos bancos de dados, você usaria índices para melhorar a velocidade da recuperação de dados. Um índice é tipicamente criado em colunas utilizadas em JOIN
, WHERE
e ORDER BY
cláusulas.
Imagine que você tem uma tabela chamada users
e deseja procurar todos os usuários com o sobrenome 'Smith'. Sem um índice, o banco de dados precisaria passar por todos os registros da tabela: isso é lento, porque quanto mais registros você tiver no banco de dados, mais trabalho será necessário para encontrar o resultado. Por outro lado, um índice ajudará o banco de dados a pular rapidamente para as páginas relevantes em que os registros 'Smith' são mantidos. É muito parecido com o modo como nós, humanos, percorremos uma lista telefônica para encontrar alguém com o sobrenome: não começamos a pesquisar a lista de capa a capa, desde que inseramos as informações em alguma ordem que pudermos. use para pular rapidamente para as páginas 'S'.
Chaves primárias e chaves únicas são semelhantes. Uma chave primária é uma coluna ou uma combinação de colunas que pode identificar exclusivamente uma linha. É um caso especial de chave exclusiva . Uma tabela pode ter no máximo uma chave primária, mas mais de uma chave exclusiva. Quando você especifica uma chave exclusiva em uma coluna, nenhuma duas linhas distintas em uma tabela podem ter o mesmo valor.
Observe também que as colunas definidas como chaves primárias ou chaves únicas são indexadas automaticamente no MySQL.
passengers
com os seguintes campos :, (id, first_name, last_name, age, passport_number)
normalmente você configuraria a id
coluna para ser a chave primária. Uma chave primária é automaticamente uma chave exclusiva. A principal diferença é que você pode ter apenas uma chave primária na tabela e que a coluna não pode conter NULL
valores. Não é necessário configurar a id
coluna UNIQUE
porque, ao defini-la como chave primária, é automaticamente garantida a sua exclusividade ... Então você também pode configurar passport_number
para UNIQUE
que não haja mais de um passageiro ...
NULL
nessa coluna, sem problemas.
KEY e INDEX são sinônimos.
Você deve adicionar um índice quando as medições de desempenho e EXPLAIN mostrarem que a consulta é ineficiente devido a um índice ausente. A adição de um índice pode melhorar o desempenho das consultas (mas pode diminuir as modificações na tabela).
Você deve usar UNIQUE quando quiser restringir os valores nessa coluna (ou colunas) para serem únicos, para que tentativas de inserir valores duplicados resultem em erro.
Uma CHAVE PRIMÁRIA é uma restrição exclusiva e também implica que a coluna NÃO é NULA. É usado para dar uma identidade a cada linha. Isso pode ser útil para ingressar em outra tabela por meio de uma restrição de chave estrangeira. Embora não seja necessário que uma tabela tenha uma CHAVE PRIMÁRIA, geralmente é uma boa idéia.
A chave primária não permite NULL
valores, mas a chave exclusiva permite NULL
valores.
Podemos declarar apenas uma chave primária em uma tabela, mas uma tabela pode ter várias chaves exclusivas (atribuição de coluna).
PRIMARY KEY
AND UNIQUE KEY
são semelhantes, exceto que possuem funções diferentes. A chave primária torna a linha da tabela exclusiva (ou seja, não pode haver 2 linhas com a mesma chave). Você pode ter apenas 1 chave primária em uma tabela de banco de dados.
A chave exclusiva torna a coluna da tabela em uma linha da tabela exclusiva (ou seja, nenhuma linha da tabela 2 pode ter o mesmo valor exato). Você pode ter mais de uma coluna da tabela de chaves exclusiva (ao contrário da chave primária, o que significa que apenas uma coluna da tabela é exclusiva).
INDEX
também cria exclusividade. O MySQL (exemplo) criará uma tabela de indexação para a coluna que está indexada. Dessa forma, é mais fácil recuperar o valor da linha da tabela quando a consulta é consultada nessa coluna da tabela indexada. A desvantagem é que, se você faz muitas atualizações / exclusões / criações, o MySQL precisa gerenciar as tabelas de indexação (e isso pode ser um gargalo de desempenho).
Espero que isto ajude.
UNIQUE KEY
pode ser, NULL
mas PRIMARY KEY
não pode ser NULL
.
Chaves exclusivas: as colunas nas quais não há duas linhas semelhantes
Chave Primária: Coleção do número mínimo de colunas que pode identificar exclusivamente todas as linhas de uma tabela (ou seja, não há duas linhas iguais em todas as colunas que constituem a chave primária). Pode haver mais de uma chave primária em uma tabela. Se existir uma chave exclusiva, será a chave primária (não "a" chave primária) na tabela. Se não existir uma chave exclusiva, mais de um valor de coluna será necessário para identificar uma linha como (nome, sobrenome, nome, nome do pai, nome da mãe) em algumas tabelas podem constituir chave primária.
Índice: usado para otimizar as consultas. Se você estiver pesquisando ou classificando os resultados com base em alguma coluna várias vezes (por exemplo, a maioria das pessoas pesquisará os alunos pelo nome e não pelo número de rolo), será possível otimizar se os valores da coluna estiverem todos " indexado "por exemplo, com um algoritmo de árvore binária.
Chave primária - podemos colocar apenas uma chave primária em uma tabela e não podemos deixar essa coluna em branco quando estamos inserindo os valores na tabela.
Chave exclusiva - podemos colocar mais de uma chave exclusiva em uma tabela e podemos deixar essa coluna em branco quando inserirmos os valores na tabela. A coluna recebe valores únicos (não iguais) quando aplicamos a chave primária e única.
A chave primária é usada para trabalhar com tabelas diferentes. Essa é a base dos bancos de dados relacionais. Se você possui um banco de dados de livros, é melhor criar 2 tabelas - 1) livros e 2) autores com a chave primária INT "id". Então você usa a identificação nos livros em vez do nome dos autores.
A chave exclusiva é usada se você não quiser ter entradas repetidas. Por exemplo, você pode ter um título na tabela de livros e deseja garantir que haja apenas uma entrada para cada título.
Chave única :
Chave primária