2
respostas

Otimização de consultas

Olá bom dia pessoal, tudo bem? Durante o curso foi visto a otimização de consultas através de índices. Senti um pouco de falta de alguns exemplos mais complexos de consultas também.

Então gostaria de saber se alguém teria alguma leitura para recomendar sobre a utilização de índices compostos nas consultas. Como fazer para que o banco selecione um determinado índice também.

2 respostas

Olá Rodrigo, tudo bem?

Peço desculpas pela demora no retorno. Não realizei estudos mais complexos sobre índices no MySQL Rodrigo, mas encontrei este Artigo que aborda sobre este assunto mais detalhadamente e pode ajudar no que você deseja. Ele trata sobre o uso, os custos, benefícios, escolha de um índice, entre outros detalhes.

Espero ter ajudado e bons estudos!

Opa bom dia rodrigo.

Cara, voce deve usar um indice composto, quando basicamente ele for necessario.

Se voce tem uma query por exemplo

SELECT ...
FROM TABELA
WHERE COLUNA1 = 'ALGUMA COISA
AND COLUNA2 = 'OUTRA COISA'
AND COLUNA3 = 'MAIS OUTRA COISINHA'

Voce com certeza tera beneficios em um indice criado nas colunas COLUNA1, COLUNA2, COLUNA3.

No SQL Server existe a opção INCLUDE, onde voce consegue cobrir tambem as colunas que estao no SELECT, dentro do indice. No MySQL não existe essa função, entao voce poderia coloca-los tambem dentro do indice, colocando por exemplo COLUNA1, COLUNA2, COLUNA3, coluna_que_estaria_no_select1,oluna_que_estaria_no_select1 e assim vai.

Outra coisa é, se voce utilizar

SELECT * FROM...

O banco de dados pode, ou nao, utilizar seu indice. Ja que o * significa ME TRAGA TUDO.

para FORÇAR o uso de um indice, voce coloca ele no FROM do seu select, mas eu nunca precisei utilizar coisa do tipo, ja que se o seu banco tem as estatisticas bem tratadas, o banco automaticamente escolherá o melhor indice para sua query:

SELECT C1, C1, C1, FROM minhaTabela FORCE INDEX (IX_ID_nome_status)

aqui caso voce tenha um indice chamado IX_ID_nome_status, ele sera utilizado.