Índices de banco de dados mainstream e seus exemplos

Diretório de artigos

 

contente

Diretório de artigos

prefácio

índice

Visão geral

conceito

Vantagens e desvantagens de usar índices no banco de dados:

Classificação do índice

índice normal

índice único

índice de chave primária

Índice de texto completo

Índice espacial

Outras categorias

Princípios Básicos de Configuração de Índice

criar índice

Indexação com a instrução CREATE INDEX

Criar um índice ao criar uma tabela

Criar um índice ao modificar uma tabela

Criar considerações de índice

Análise de desempenho do índice

Verifique se o perfil está ativado

definir perfil aberto

Visualize os detalhes demorados da execução do SQL

índice de queda

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;

Acho que você gosta

Origin blog.csdn.net/qq_46007633/article/details/124087799
Recomendado
Clasificación