Uso de índices otimizados para MySQL

Diretório

Cenários de uso do índice

Quais colunas são adequadas para indexação

Índice comum

Método SQL de otimização de índice

Considerações ao usar índices 


O que outras pessoas estão dizendo

Cenários de uso do índice

 

1. A chave primária da tabela
2. Estabeleça automaticamente um índice exclusivo
3. A restrição exclusiva do campo da tabela 4. O campo da
consulta condicional direta (o campo usado para a restrição condicional no SQL)
5. O campo associado a outras tabelas na consulta
6. Campos classificados na consulta (os campos classificados melhoram bastante a velocidade de classificação se acessados ​​pelo índice)
7. Campos de estatísticas ou estatísticas agrupadas na consulta

8. Há muito poucos registros na tabela (se houver apenas 5 registros em uma tabela e o índice for usado para acessar os registros, a tabela de índices precisará ser acessada primeiro e a tabela de dados será acessada através da tabela de índices. Geralmente, a tabela de índices e a tabela de dados não estão no mesmo bloco de dados)
9 Tabelas modificadas, frequentemente inseridas, excluídas e modificadas (para algumas tabelas de negócios frequentemente processadas, o índice deve ser minimizado se a consulta permitir)
10. Duplicação de dados e campos de tabela distribuídos uniformemente (se uma tabela tiver 100.000 linhas de registros, existe O campo A possui apenas dois valores de T e F, e a probabilidade de distribuição de cada valor é de aproximadamente 50%, portanto, indexar o campo desta tabela A geralmente não aumenta a velocidade da consulta do banco de dados.)
11, geralmente consulta com o campo principal, mas Campos de tabela com muitos valores principais de índice de campo
12. Assuntos para indexar dezenas de milhões de bancos de dados MySQL e meios para melhorar o desempenho 

 

 

Quais colunas são adequadas para indexação

 

1. Na cláusula where, agrupe por cláusula, ordem por cláusula e na cláusula, adicione índices às colunas da cláusula
2. Quanto menor o campo de índice, melhor (porque a unidade de armazenamento de dados do banco de dados é "página", mais dados são armazenados, IO também será maior

3. Colunas com grande dispersão são colocadas na frente do índice da junta

select * from payment where staff_id =2 and customer_id =584;

Qual coluna deve ser colocada na frente do SQL acima para estabelecer um índice conjunto?

Observe o número de IDs diferentes nesses dois campos separadamente: quanto maior o número, maior o grau de dispersão: portanto, isso pode ser visto na figura a seguir: customer_id possui um alto grau de dispersão 

Conclusão: Como a dispersão de customer_id é grande, é bom usar o índice (customer_id, staff_id)

 

 

Índice comum

 

Convenção de nomenclatura

1, necessita campo indexado, em que as condições para ser
2, uma pequena quantidade de dados não precisa de campo indexado
3, em que se a condição é uma relação OU, indexação não funciona
4 de acordo com os princípios do mais à esquerda

 

 O que é um índice conjunto

1. Um índice em duas ou mais colunas é chamado de índice conjunto ou índice composto.
2. Com as colunas adicionais no índice, você pode restringir a pesquisa, mas o uso de um índice com duas colunas é diferente do uso de dois índices separados. Ao criar um índice composto, considere cuidadosamente a ordem das colunas. O índice composto é muito útil quando você realiza uma pesquisa em todas as colunas do índice ou apenas nas primeiras colunas; quando você realiza uma pesquisa apenas em qualquer coluna subsequente, o índice composto é inútil.

 

 

Método SQL de otimização de índice

 

1. Manutenção e otimização de índices (índices duplicados e redundantes)
Aumentar o índice será benéfico para a eficiência da consulta, mas reduzirá a eficiência da inserção, atualização, exclusão, mas na verdade não é o caso, muitos índices não afetarão apenas o uso A eficiência também afetará a eficiência da consulta. Isso ocorre porque o banco de dados deve primeiro escolher qual índice usar para a análise de consulta. Se houver muitos índices, o processo de análise será mais lento, o que também reduz a eficiência da consulta, portanto, queremos Saiba como aumentar, às vezes você precisa saber para manter e excluir índices desnecessários

 

2. Como encontrar índices duplicados e redundantes

  • Repita o índice:

O índice repetido refere-se ao mesmo tipo de índice criado pela mesma coluna na mesma ordem.Os índices na chave primária e nas colunas de ID na tabela a seguir são índices repetidos.

create table test(
id int not null primary key,
name varchar(10) not null,
title varchar(50) not null,
unique(id)
)engine=innodb;
  • Índice redundante:

Índice redundante refere-se a um índice em que as colunas de prefixo de vários índices são iguais ou a chave primária é incluída no índice conjunto.No exemplo a seguir, chave (nome, id) é um índice redundante

create table test(
id int not null primary key,
name varchar(10) not null,
title varchar(50) not null,
key(name,id)
)engine=innodb;

 

3. Use a ferramenta pt-duplicate-key-checker para encontrar índices duplicados

pt-duplicate-key-checker -uroot -padmin -h 127.0.0.1

 

 

4. Método de manutenção de índice
Devido a alterações nos negócios, alguns índices não precisam ser utilizados posteriormente, portanto, devem ser excluídos. No mysql, você pode usar o log de consultas lentas com a ferramenta pt-index-use para analisar o uso do índice;

pt-index-usage -uroot -padmin /var/lib/mysql/mysql-host-slow.log

 

 

Considerações ao usar índices 


1. Crie um índice
Muitas vezes, o problema de desempenho é muito simples porque esquecemos de adicionar o índice ou porque não adicionamos um índice mais eficaz. Se nenhum índice for adicionado, será realizada uma varredura completa da tabela para localizar até mesmo uma parte específica dos dados.Se a quantidade de dados em uma tabela for grande e os resultados qualificados forem poucos, nenhum índice causará degradação fatal no desempenho. . No entanto, não é necessário criar um índice em nenhum caso. Por exemplo, o sexo pode ter apenas dois valores. A indexação não apenas não tem vantagem, mas também afeta a velocidade da atualização. Isso é chamado de indexação excessiva. 

2. Índice composto Por
exemplo, há uma declaração como esta: selecione * dos usuários onde area = 'beijing' e age = 22;
se estamos criando um único índice na área e na idade, respectivamente, porque a consulta mysql pode usar apenas um de cada vez Índice, portanto, embora isso tenha melhorado relativamente a eficiência de uma varredura completa de tabela sem indexação, se você criar um índice composto nas colunas de área e idade, trará maior eficiência. Se criarmos um índice composto de (área, idade, salário), na verdade é equivalente a criar (área, idade, salário), (área, idade), (área) três índices, que é chamado o melhor prefixo esquerdo Características
. Portanto, ao criar um índice composto, devemos colocar a coluna mais comumente usada como restrição à esquerda e depois diminuir em ordem.


3. O índice não conterá uma coluna com um valor NULL.
Enquanto a coluna contiver um valor NULL, ela não será incluída no índice. Enquanto uma coluna no índice composto contiver um valor NULL, essa coluna será inválida para este índice composto. Portanto, não permitimos que o valor padrão do campo seja NULL ao projetar o banco de dados.


4. Use o índice curto
para indexar a coluna da sequência, se possível, você deve especificar um tamanho de prefixo. Por exemplo, se houver uma coluna CHAR (255), se vários valores forem exclusivos nos 10 ou 20 primeiros caracteres, não indexe a coluna inteira. Índices curtos podem não apenas melhorar a velocidade da consulta, mas também economizar espaço em disco e operações de E / S.


5, problema de índice classificado, a
consulta mysql usa apenas um índice; portanto, se o índice tiver sido usado na cláusula where, a coluna em ordem por não usará o índice. Portanto, não use a operação de classificação quando a classificação padrão do banco de dados puder atender aos requisitos, tente não incluir a classificação de várias colunas.Se necessário, é melhor criar um índice composto para essas colunas.


6. Operação da instrução like
Geralmente, o uso da operação like é desencorajado.Se for absolutamente necessário, como usá-la também é um problema. Como "% aaa%" não usará o índice e como "aaa%" pode usar o índice.


7. Não execute operações nas colunas,
selecione * de usuários onde YEAR (data de adição) ×


8. Operação NOT IN A operação
NOT IN não usará o índice, será uma verificação completa da tabela. NOT IN pode ser substituído por NOT EXISTS

Publicado 568 artigos originais · Gosto 180 · Visita mais de 180.000

Acho que você gosta

Origin blog.csdn.net/Delicious_Life/article/details/105610256
Recomendado
Clasificación