Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como otimizar o banco de dados esta consulta em banco de dados grande?


Você não tem nenhum índice além da chave primária. Você precisa fazer o índice nos campos que você usa em sua instrução WHERE. Se você precisar indexar apenas 1 campo ou uma combinação de vários campos depende dos outros SELECTs que você estará executando nessa tabela.

Tenha em mente que REGEXP não pode usar índices, LIKE pode usar o índice apenas quando não começa com curinga (portanto LIKE 'a%' pode usar índice, mas LIKE '%a' não pode), maior que / menor que (<>) geralmente não usa índices também.

Então você fica com o code e check Campos. Suponho que muitas linhas terão o mesmo valor para check , então eu começaria o índice com code campo. Índices de vários campos podem ser usados ​​apenas na ordem em que são definidos...

Imagine o índice criado para os campos code, check . Este índice pode ser usado em sua consulta (onde a cláusula WHERE contém os dois campos), também na consulta com apenas code campo, mas não em consulta apenas com check campo.

É importante ORDER BY id ? Caso contrário, deixe-o de fora, isso impedirá a passagem de classificação e sua consulta terminará mais rapidamente.