Sintaxe CREATE INDEX
A instrução CREATE INDEX
não faz nada em versões do MariaDB anterior a 3.22. Na versão 3.22 ou posteriores, CREATE INDEX
é mapeado para uma instrução ALTER TABLE
para criar índices. Leia "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
. Leia "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 MariaDB 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 MariaDB Versão 3.23.2 ou mais novo e estiver usando os tipos de tablea MyISAM
ou BDB
, ou MariaDB 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 MariaDB utiliza índices, veja "Como o MariaDB 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 MariaDB Versão 3.23.23 e posterior. "Pesquisa Full-text no MySQL".