O MySQL pode criar índices em múltiplas colunas. Um índice
pode consistir de até 15 colunas. (Em colunas
CHAR
e VARCHAR
você
também pode utilizar um prefixo da coluna como parte de um
índice).
Um índice de múltiplas colunas pode ser considerado um array ordenado contendo valores que são criados concatenando valores de colunas indexadas.
O MySQL utiliza índices de múltiplas colunas de forma que
consultas são rápidas quando você especifica uma quantidade
conhecida para a primeira coluna do índice em uma cláusula
WHERE
, mesmo se você não especificar
valores para as outras colunas.
Suponha que uma tabela tenha a seguinte especificação:
mysql> CREATE TABLE teste (
id INT NOT NULL,
ultimo_nome CHAR(30) NOT NULL,
primeiro_nome CHAR(30) NOT NULL,
PRIMARY KEY (id),
INDEX nome (ultimo_nome,primeiro_nome));
Então o índice nome
é um índice com
ultimo_nome
e
primeiro_nome
. O índice será usado para
consultas que especificarem valores em um limite conhecido para
ultimo_nome
, ou para ambos
ultimo_nome
e
primeiro_nome
. Desta forma, o índice
nome
será usado nas seguintes consultas:
mysql>SELECT * FROM teste WHERE ultimo_nome="Widenius";
mysql>SELECT * FROM teste WHERE ultimo_nome="Widenius"
AND primeiro_nome="Michael"; mysql>SELECT * FROM teste WHERE ultimo_nome="Widenius"
AND (primeiro_nome="Michael" OR primeiro_nome="Monty"); mysql>SELECT * FROM teste WHERE ultimo_nome="Widenius"
AND primeiro_nome >="M" AND primeiro_nome < "N";
Entretanto, o índice nome
não será usado nas seguintes
consultas:
mysql>SELECT * FROM teste WHERE primeiro_nome="Michael";
mysql>SELECT * FROM teste WHERE ultimo_nome="Widenius"
OR primeiro_nome="Michael";
Para maiores informações sobre a maneira que o MySQL utiliza índices para melhorar o desempenho das consultas, veja Secção 5.4.3, “Como o MySQL Utiliza Índices”.
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.