English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
在本教程中,您将学习如何在表上创建索引以提高数据库性能。
索引是与表相关联的数据结构,它基于一个或多个列(索引键)中的值提供对表中行的快速访问。
假设您的数据库中有一个customers假设您的数据库中有一个表,并且您想使用以下语句找出名字是以字母A开头的所有客户。
SELECT cust_id, cust_name, address FROM customers WHERE cust_name LIKE 'A%';
Para encontrar tal cliente, o servidor deve sercustomersVarredura linha a linha na tabela e verificação do conteúdo da coluna de nome. Embora funcione bem para tabelas com poucas linhas, imagine se a tabela contiver um milhão de linhas. Neste caso, a resposta à consulta pode levar muito tempo. Neste caso, você pode acelerar o processamento aplicando índices à tabela.
Você pode criar índices usando a seguinte sentença CREATE INDEX:
CREATE INDEX index_name ON table_name (column_name);
Por exemplo, para criar um índice na tabela de clientesnamePara criar índices em colunas, você pode usar:
CREATE INDEX cust_name_idx ON customers (cust_name);
Por padrão, o índice permitirá entradas repetidas e ordenará os itens em ordem crescente. Para exigir entradas únicas no índice, adicione a palavra-chave UNIQUE após CREATE, conforme mostrado a seguir:
CREATE UNIQUE INDEX cust_name_idx ON customers (cust_name);
No MySQL, você pode ver os índices disponíveis em uma tabela específica, conforme mostrado a seguir:
mysql> SHOW INDEXES FROM customers \G
Dica:Use \G em vez de ponto e vírgula (;) para terminar a sentença SQL. Se o resultado for muito largo para a janela atual, ele será exibido verticalmente em vez do formato de tabela convencional.
Você também pode criar índices que se estendem por várias colunas. Por exemplo, suponha que você já tenha nomeado a tabelado usuáriocom colunafirst_nameelast_nameE se você acessa frequentemente essas colunas, você pode criar um índice sobre os dois para melhorar o desempenho, como mostrado na figura a seguir:
CREATE INDEX user_name_idx ON users (first_name, last_name);
Dica:Você pode pensar em índices de banco de dados como a parte de índice de um livro, para ajudar a encontrar ou localizar rapidamente temas específicos no livro.
Os índices devem ser criados com cautela. Porque a cada vez que uma linha é adicionada, atualizada ou excluída na tabela, todos os índices na tabela devem ser modificados. Portanto, quanto mais índices você tiver, mais trabalho o servidor precisará executar, o que eventualmente levará a uma diminuição no desempenho.
A seguir estão algumas diretrizes básicas que podem ser seguidas ao criar índices:
Crie índices para as colunas que você usa frequentemente para pesquisar dados.
Não crie índices para colunas que nunca são usadas como chave de busca.
Colunas de índice usadas para melhorar o desempenho da junção.
Evite incluir colunas com muitos valores NULL.
Da mesma forma, a pequena tabela não precisa de índice, porque, no caso das pequenas tabelas, a varredura do servidor na tabela geralmente é mais rápida do que consultar o índice.
Atenção:Quando você criar uma tabela, a maioria dos sistemas de banco de dados (como MySQL, SQL Server, etc.) cria automaticamente índices para a tabelaPRIMARY KEYeUNIQUEColuna Criar Índice.
Você pode usar a seguinte declaração para excluir índices que não são mais necessários.
DROP INDEX index_name ON table_name;
A seguinte declaração excluirá os seguintes índices:customersExcluir Índice de Tabelacust_name_idx.
DROP INDEX cust_name_idx ON customers;
Além disso, seExcluir Tabela,Então, todos os índices relacionados também serão excluídos.
Aviso:Atenção: Antes de excluir índices, você deve verificar os efeitos que isso causará. Como uma regra geral, nunca crie ou exclua índices sem pensar.