Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Preazito

Consulta lenta

Recommended Posts

Boa tarde a todos,

Estou com um grande problema. Estou precisando fazer uma consulta em um banco de dados MySQL, sendo que a consulta que estou fazendo, está demorando uns 43 minutos para trazer a informação.
A query no banco de dados é:

SELECT 
    event.event_key, 
    devicemodel.model_name,
    event.time,
    event.type,
    eventdesc.title
FROM 
    devicemodel
    JOIN event ON event.model_key = devicemodel.model_key
    JOIN eventdesc ON event.type = eventdesc.type
WHERE
    devicemodel.topology_model_name_string = 'Centro de Gerencia - CITEx:EBNet:CPEs'
    AND event.type IN ('66305', '68917')
    AND devicemodel.model_name NOT LIKE '%yourdomain.com%'
    AND devicemodel.model_name NOT LIKE '100%'
    AND devicemodel.model_name NOT LIKE '192%'

Eu rodei um "EXPLAIN" dessa query e me retornou a seguinte informação:

 

id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE devicemodel ALL PRIMARY NULL NULL NULL 8351 Using where 1 SIMPLE event ref model_key_idx, time_idx, type_idx model_key_idx 4 reporting.devicemodel.model_key 36 Using where 1 SIMPLE eventdesc eq_ref PRIMARY PRIMARY 4 reporting.event.type 1

 

Só a nível de informação o tamanho da tabela "event" no MySQL está em aproximadamente 64Gb de dados, enquanto as tabelas "devicemodel" e "eventdesc" tem respectivamente 14Mb e 9Mb.

Outra informação é que a tabela "event" só faz inserção de dados e não faz atualização deles.

 

Vocês poderiam me ajudar a tornar essa consulta mais rápida no banco de dados?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Talvez se de alguma forma se consiguir usar a chave primáia ou índice da tabela devicemodel fique mais rápido.

 

A busca

devicemodel.topology_model_name_string = 'Centro de Gerencia - CITEx:EBNet:CPEs'

deve gerar um FULL TABELA SCAN

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde Motta,

 

Infelizmente não tem uma chave primária para essa informação na tabela, se tivesse eu teria usado.

Você teria uma outra opinião?

 

Já pensei em criar uma tabela, com os campos que eu preciso.

Criar uma TRIGGER na tabela "event", em que toda vez que fosse feito um INSERT, inserisse essa informação na tabela que eu criei. O que você acha?

Compartilhar este post


Link para o post
Compartilhar em outros sites

talvez um índice em devicemodel.topology_model_name_string resolva

Compartilhar este post


Link para o post
Compartilhar em outros sites

Infelizmente eu não tenho como alterar a estrutura do BD, pois ele é um sistema de terceiro.

Se eu fizer algo do tipo, é bem provável que dê um um problema na aplicação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.