Preazito 0 Denunciar post Postado Março 28, 2016 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
Motta 645 Denunciar post Postado Março 28, 2016 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
Preazito 0 Denunciar post Postado Março 28, 2016 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
Motta 645 Denunciar post Postado Março 28, 2016 talvez um índice em devicemodel.topology_model_name_string resolva Compartilhar este post Link para o post Compartilhar em outros sites
Preazito 0 Denunciar post Postado Março 28, 2016 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
Motta 645 Denunciar post Postado Março 29, 2016 Entendo , pelo visto pouco a fazer. Compartilhar este post Link para o post Compartilhar em outros sites