CREATE [UNIQUE|FULLTEXT] INDEX nome_indice ON nome_tabela (index_col_name,...) index_col_name: col_name [(length)] [ASC | DESC]
A instrução CREATE INDEX
não faz nada em
versões do MySQL anterior a 3.22. Na versão 3.22 ou
posteriores, CREATE INDEX
é mapeado para uma
instrução ALTER TABLE
para criar índices.
See Secção 6.5.4, “Sintaxe ALTER TABLE
”.
Normalmente você cria todos os índices em uma tabela ao mesmo
tempo em que a própria tabela é criada com CREATE
TABLE
. See Secção 6.5.3, “Sintaxe CREATE TABLE
”.
CREATE INDEX
lhe permite adicionar índices a
tabelas existentes.
Uma lista de colunas na forma (col1,col2,...)
cria um índice com múltiplas colunas. Valores de índice são
formados concatenando os valores de colunas dadas.
Para colunas CHAR
e
VARCHAR
, índices que utilizam apenas parte
da coluna podem ser criados, usando a sintaxe
nome_coluna(length)
para indexar os primeiros
length()
bytes de cada valor da coluna. (Para
colunas BLOB
e TEXT
, um
prefixo length é exigido; length()
pode ter
um valor até 255 caracteres.) A instrução mostrada aqui cria
um índice usando os primeiros 10 caracteres da coluna
name
:
mysql> CREATE INDEX part_of_name ON customer (name(10));
Como a maioria dos nomes normalmente diferem nos primeiros 10
caracteres, este índice não deve ser muito menor que um
índice criado com toda a coluna name
. Além
disso, usar colunas parciais como índices pode fazer o arquivo
de índice muito menor, o que pode economizar muito espaço em
disco e pode também aumentar a velocidade de operações
INSERT
!
Note que você pode adicionar um índice em uma coluna que pode
ter valores apenas se você estiver usando o MySQL Versão
3.23.2 ou mais novo e estiver usando os tipos de tabelas
MyISAM
, InnoDB
, ou
BDB
. Você só pode adicionar um índice em
uma coluna BLOB
/ TEXT
se
você estiver usando o MySQL Versão 3.23.2 ou mais novo e
estiver usando os tipos de tablea MyISAM
ou
BDB
, ou MySQL Versão 4.0.14 ou mais novo e o
tipo de tabela InnoDB
. Para um índice em uma
coluna BLOB
/TEXT
, o
tamanho do prefixo sempre deve ser especificado.
Uma especificação index_col_name
pode
finalizar com ASC
ou DESC
.
Esta palavras chaves são permitidas para estensão futura para
especificar o armazenamento do valor do índice em crescente ou
decrescente. Atualmente elas são analisadas mas ignoradas;
valores de índice são sempre armazenados em ordem crescente.
Para mais detalhes sobre como o MySQL utiliza índices, veja Secção 5.4.3, “Como o MySQL Utiliza Índices”.
Indíces FULLTEXT
só podem indexar colunas
CHAR
, VARCHAR
e
TEXT
, e apenas em tabelas
MyISAM
. Índices FULLTEXT
estão disponíveis no MySQL Versão 3.23.23 e posterior.
Secção 6.8, “Pesquisa Full-text no MySQL”.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.