Diretório de artigos
contente
Vantagens e desvantagens de usar índices no banco de dados:
Princípios Básicos de Configuração de Índice
Indexação com a instrução CREATE INDEX
Criar um índice ao criar uma tabela
Criar um índice ao modificar uma tabela
Análise de desempenho do índice
Verifique se o perfil está ativado
Visualize os detalhes demorados da execução do SQL
Use a instrução drop index para descartar um índice
Use a instrução alter table para excluir um índice
prefácio
Olá a todos, eu sou a cor do gelo três pontos.
Homepage pessoal: blog de gelo três cores
Este artigo fala sobre o conhecimento de índices, o conceito de índices, a classificação de índices, os princípios básicos de configuração, os três métodos e precauções para criar índices, a análise de desempenho de índices e os pontos de conhecimento de exclusão de índices. A indexação é difícil, muito importante.
Amigos que estão passando, curtam e sigam antes de caminhar. Bem-vindos à área de comentários para se comunicar. Nunca é tarde para começar a trabalhar duro, então é melhor começar com este artigo!
Vamos crescer juntos! reabastecer
índice
Visão geral
conceito
1. O índice é uma estrutura de dados especial composta por uma ou mais colunas na tabela do banco de dados. O índice pode ser usado para consultar rapidamente as informações de registro específicas na tabela do banco de dados (o índice é semelhante ao diretório no dicionário, que pode ser classificado por pinyin, traços, etc.), radicais e outros diretórios classificados (índices) para encontrar rapidamente a palavra necessária. O índice de várias colunas é semelhante ao primeiro de acordo com uma condição, esta condição é a mesma, então continue a julgar o segunda condição, ou seja, o índice da segunda coluna e assim por diante)
2. Os índices afetam o desempenho dos dados e os índices eficientes podem melhorar a velocidade e o desempenho das consultas. A consulta padrão do MySQL é realizar uma varredura completa da tabela com base nas condições de pesquisa (do primeiro ao último é chamado de varredura completa da tabela), e os registros que atendem às condições correspondentes são adicionados ao conjunto de resultados. Se várias junções de tabela estiverem envolvidas, as condições de consulta forem complexas e a quantidade de dados for grande, a quantidade de dados executados sem verificação de índice será muito grande e muito lenta.
3. Um índice contém uma chave gerada a partir de uma ou mais colunas em uma tabela ou exibição e um ponteiro para um local de armazenamento que mapeia para uma linha de dados especificada. (A forma do índice no banco de dados é semelhante ao índice de um livro, o valor da chave é como o título no índice e o ponteiro é equivalente ao número da página. O índice pode encontrar rapidamente o conteúdo (dados da tabela) como um índice, sem ter que varrer toda a tabela de dados para encontrá-lo.)
4. O índice é construído na tabela e fornece um método interno para organizar os dados na tabela no banco de dados. O armazenamento da tabela consiste em duas partes, uma é a página de dados da tabela e a outra é a página de índice. O índice é armazenado na página de índice.
5. Uma vez criado o índice, ele será gerenciado e mantido automaticamente pelo banco de dados. (Por exemplo, ao inserir, atualizar e excluir um registro em uma tabela, o banco de dados automaticamente faz as alterações correspondentes no índice. Ao executar uma consulta, o otimizador de consulta estima o custo dos vários métodos de recuperação de dados disponíveis e escolhe entre eles O plano de consulta mais eficiente.)
6. O índice não é quanto mais melhor, é necessário entender corretamente a importância e os princípios de design do índice e criar um índice adequado. (Quando a quantidade de dados é pequena, não há necessidade de adicionar um índice)
Vantagens e desvantagens de usar índices no banco de dados :
Vantagens: 1. Acelerar a recuperação de dados: O índice pode localizar rapidamente linhas de dados com base no valor de uma coluna ou de várias colunas. 2. Otimizando consultas: O otimizador de consultas depende de índices para funcionar, e os índices podem acelerar operações como junções, classificação e agrupamento. 3. Imponha a exclusividade de linhas: Ao criar índices exclusivos para colunas, você pode garantir que os dados na tabela não sejam duplicados.
Desvantagens: 1. Embora o índice melhore a velocidade da consulta, ele reduzirá a velocidade de atualização da tabela, pois ao atualizar a tabela, o MySQL não apenas salva os dados, mas também salva o índice. 2. Crie um arquivo de índice que ocupe espaço em disco.
Classificação do índice
Os índices MySQL podem ser divididos nas cinco categorias a seguir: índices comuns, índices exclusivos, índices de chave primária, índices de texto completo e índices espaciais. (De um modo geral, os três primeiros são suficientes, os comumente usados são índice de chave primária e índice único)
índice normal
Índice ordinário (índice) é o tipo de índice básico no MySQL, permitindo a inserção de valores duplicados e nulos na coluna que define o índice. A chave para o índice é index.
índice único
O valor de uma coluna de índice único (único) deve ser único, e valores nulos são permitidos. No caso de um índice composto, a combinação dos valores das colunas deve ser única. Vários índices exclusivos podem ser criados em uma tabela.
índice de chave primária
O índice de chave primária (chave primária) é um índice exclusivo especial que não permite valores nulos. Geralmente, o índice de chave primária é criado enquanto a tabela está sendo construída. Você também pode aumentar a chave primária modificando a tabela, mas uma tabela só pode ter um índice de chave primária. (geralmente consistente com a ordem física real)
Índice de texto completo
A indexação de texto completo refere-se ao suporte a pesquisas de valores de texto completo nas colunas que definem o índice, permitindo a inserção de valores duplicados e nulos nas colunas indexadas. O índice indexa apenas colunas do tipo char, varchar e text e só pode ser usado em
A tabela do mecanismo de armazenamento MylSAM é compilada. Por padrão no MySQL, tem pouco efeito no chinês.
Índice espacial
Um índice espacial (espacial) é um índice em um campo de um tipo de dados espaciais. Existem 4 tipos de dados espaciais no MySQL: geometria, ponto, cadeia de linhas e polígono. Os índices espaciais são criados apenas em tabelas no mecanismo de armazenamento MyISAM. Para começar, esses índices raramente são usados. (Nosso mecanismo de armazenamento é innoDB)
Outras categorias
Se classificado de acordo com o número de colunas para criar o valor da chave de índice, o índice também pode ser dividido em índice de coluna única e índice composto.
Se classificado de acordo com o método de armazenamento, pode ser dividido em índice de árvore binária (B-Tree) e índice de hash.
Princípios Básicos de Configuração de Índice
Ao criar um índice em uma tabela de dados, para tornar o uso do índice mais eficiente, você deve considerar em quais campos criar o índice e qual tipo de índice criar. Os princípios são os seguintes:
1. Uma tabela cria um grande número de índices, o que afetará o desempenho das instruções de inserção, atualização e exclusão. Evite criar muitos índices em tabelas atualizadas com frequência e limite o número de índices.
2. Se a quantidade de dados na tabela for grande, haverá menos atualizações nos dados da tabela e mais consultas, e vários índices poderão ser criados para melhorar o desempenho.
3. Os campos que geralmente exigem operações de classificação, agrupamento e união devem ser indexados, ou seja, os índices são criados em campos que são usados para junção, onde julgamento e ordenação por classificação.
4. A criação de índices em exibições pode melhorar significativamente o desempenho da consulta.
5. Procure não indexar campos que contenham um grande número de valores duplicados no banco de dados. Estabelecer índices nesses campos pode reduzir o desempenho do banco de dados.
6. Crie um índice na chave primária. No InnoDB, é muito eficiente acessar os dados através da chave primária. Apenas um índice de chave primária pode ser criado por tabela.
7. Para limitar o número de índices. Para índices que não são mais usados ou raramente usados, exclua-os a tempo.
criar índice
Normalmente, existem três maneiras de comando para criar um índice: use a instrução CREATE INDEX para criar um índice, crie um índice ao criar uma tabela e crie um índice modificando a tabela.
Indexação com a instrução CREATE INDEX
Formato: CREATE [único|texto completo|espacial] INDEX nome do índice ON nome da tabela (qual coluna do nome da tabela tem nome de coluna 1, nome de coluna 2...)
Exemplo: Crie um índice comum ascendente ename_index na coluna ename da tabela de funcionários.
CREATE INDEX ename_index ON empregado(ename ASC);
Exemplo: Crie um índice exclusivo ename_uni_index na coluna ename da tabela de funcionários.
CREATE UNIQUE INDEX ename_uni_index ON empregado(ename);
Exemplo: Crie um índice composto empno_ename_index nas colunas empno e ename da tabela de funcionários.
CREATE INDEX empno_ename_index ON empregado(empno,ename);
Você pode usar a instrução show index from table_name para visualizar os índices que foram criados na tabela
MOSTRAR ÍNDICE DO funcionário; como segue
Também podemos visualizar diretamente o índice na tabela de design clicando com o botão direito do mouse na tabela de funcionários no navicat, da seguinte maneira
Criar um índice ao criar uma tabela
Exemplo: Ao criar a tabela dept_index, um índice exclusivo dname_index é criado para o campo dname e um índice de prefixo loc_index é criado para os 3 primeiros caracteres do campo loc.
CRIAR TABELA SE NÃO EXISTE dept_index (
deptno INT(2),
dname VARCHAR(14),
loc VARCHAR(13),
CHAVE PRIMÁRIA (deptno),
ÍNDICE ÚNICO dname_index(dname),
ÍNDICE loc_index(loc(3))
);
Criar um índice ao modificar uma tabela
Exemplo: Crie um índice composto de deptno e dname na tabela dept_index.
ALTER TABLE dept_index ADD INDEX deptno_dname_index(deptno, dname);
Visualize os índices criados pela tabela dept_index
Mostrar índice de dept_index;
Criar considerações de índice
1. Somente o proprietário da tabela tem permissão para criar índices na tabela.
2. O nome do índice deve estar de acordo com as regras de nomenclatura do MySQL e deve ser exclusivo na tabela. (O índice de chave primária deve ser exclusivo e o índice exclusivo não é necessariamente a chave primária. Só pode haver uma chave primária em uma tabela, mas pode haver um ou mais índices exclusivos.)
3. Quando uma restrição exclusiva é criada para uma tabela, o MySQL criará automaticamente um índice exclusivo. Ao criar um índice exclusivo, você deve garantir que a coluna indexada não inclua dados duplicados e não tenha dois ou mais valores nulos (null). Como os dois valores nulos também são considerados dados duplicados ao criar um índice, se houver tais dados, eles devem ser excluídos primeiro, caso contrário, o índice não poderá ser criado com êxito. Ou seja, um índice exclusivo permite apenas um valor nulo.
Análise de desempenho do índice
Após o MySQL 5.0, ele vem com a ferramenta de análise de diagnóstico de consultas "Show Profiles", que pode localizar diversos consumos de recursos (como CPU, IO, etc.) de uma execução de instrução SQL, bem como o tempo consumido pela execução de SQL.
Para usá-lo, primeiro você precisa abrir o perfil
O banco de dados padrão não está habilitado e a definição de perfil da variável é uma variável do usuário, que deve ser reativada sempre
Verifique se o perfil está ativado
mostre variáveis como "%pro%";
definir perfil aberto
(Porque eu verifico e sei que o meu está ligado, então não preciso fazer esta etapa novamente)
definir perfil = 1;
Visualize os detalhes demorados da execução do SQL
show profiles; -- Visualiza o tempo total de execução de todos os SQLs.
Exemplo: Análise de desempenho do tempo de execução para nomes de funcionários antes e depois de serem indexados (o processo é o seguinte)
-- Cria a tabela emp_index da tabela de funcionários
CREATE TABLE emp_index AS SELECT * FROM empregado;
-- perfil aberto
definir perfil = 1;
-- Consulta o nome do funcionário antes que o índice seja adicionado
SELECT ename FROM emp_index;
-- Visualiza o tempo de execução do SQL
mostrar perfis;
-- adiciona índice ao ename
CRIAR ÍNDICE ename_index ON emp_index(ename);
-- Consulta o nome do funcionário após a indexação
SELECT ename FROM emp_index;
-- Visualiza o tempo de execução do SQL mais recente
mostrar perfis;
O resultado é o seguinte:
índice de queda
A exclusão de um índice é um índice não utilizado e precisa ser atualizado e mantido em tempo hábil, pois o índice tem um limite superior. Ele pode ser excluído pela instrução DROP e instrução ALTER TABLE.
Use a instrução drop index para descartar um índice
Formato: DROP INDEX nome do índice ON nome da tabela ;
exemplo:
DROP INDEX ename_index ON funcionário;
Use a instrução alter table para excluir um índice
Você pode usar CREATE INDEX ename_index ON employee(ename ASC); recriar o índice ename_index e excluí-lo como um teste com alter table
Formato:
ALTER TABLE nome da tabela [DROP PRIMARY KEY| DROP INDEX nome do índice| DROP FOREIGN KEY fk_symbol
exemplo:
ALTER TABLE funcionário DROP INDEX ename_index;