Qual é a diferença entre o uso de INDEX vs KEY no MySQL?
Pergunta
Eu sei como usar INDEX como no código a seguir. E eu sei como usar chave estrangeira e chave primária .
CREATE TABLE tasks (
task_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
parent_id INT UNSIGNED NOT NULL DEFAULT 0,
task VARCHAR(100) NOT NULL,
date_added TIMESTAMP NOT NULL,
date_completed TIMESTAMP,
PRIMARY KEY (task_id),
INDEX parent (parent_id),
....
No entanto eu encontrei um código usando CHAVE em vez do índice da seguinte forma.
...
KEY order_date (order_date)
...
Eu não poderia encontrar qualquer explicação na página oficial do MySQL. Alguém poderia me dizer qual é a diferença entre a chave eo índice?
A única diferença que vejo é que quando eu uso KEY ...
, eu preciso repetir a palavra, por exemplo
KEY order_date (order_date)
.
Solução
Não há nenhuma diferença. Eles são sinônimos.
A partir o CREATE TABLE
manual de entrada :
KEY
é normalmente um sinônimo paraINDEX
. A lata chave de atributoPRIMARY KEY
também ser especificado como apenasKEY
quando administrado em uma definição de coluna. este foi implementado para compatibilidade com outros sistemas de banco de dados.
Outras dicas
Aqui é um boa descrição sobre a "diferença ":
"MySQL exige que cada Key também ser indexado, isso é uma implementação detalhe específico para MySQL para melhorar o desempenho. "
Ele é mencionado como sinônimo de INDEX
em "Criar mesa dos docs:
MySQL 5.5 Reference Manual :: Declaração de 13 de sintaxe SQL :: 13.1 Definição de Dados demonstrações :: 13.1.17 CREATE TABLE Syntax
Nos já citou a seção e ligada a ajuda para 5,1.
Como PRIMARY KEY
cria uma chave primária e um índice para você,
KEY
cria apenas um índice.
As chaves são campos especiais que desempenham papéis muito específicos dentro de uma tabela, e o tipo de chave determina o seu propósito dentro da tabela.
Um índice é uma estrutura que RDBMS (sistema de gestão de base de dados) fornece para melhorar o processamento de dados. Um índice não tem nada a ver com uma estrutura de banco de dados lógico.
SO ...
As chaves são estruturas lógicas que você usa para identificar registros dentro de uma tabela e os índices são estruturas físicas que você usa para processamento de dados otimizar.
Fonte: Banco de dados de design para Meros Mortais
Autor: Michael Hernandez
A chave é um conjunto de colunas ou expressões em que nós construímos um índice.
-
Enquanto um índice é uma estrutura que é armazenado no banco de dados, as chaves são estritamente um conceito lógico.
-
Índice ajuda-nos no acesso rápido um recorde, enquanto as chaves apenas identificar os registros de forma exclusiva.
-
Cada mesa terá necessariamente uma chave, mas ter um índice não é obrigatório.
Verifique na https://docs.oracle. com / cd / E11882_01 / server.112 / e40540 / indexiot.htm # CNCPT721