Fórum Lentidão na consulta por conta do uso do LIKE #527377

30/07/2015

0

Boa noite, estou com um problema com uma consulta em um banco com mais de 100 milhões de registros.
Estava pensando em usar BULK COLLECT , para diminuir a lentidão e o alto consumo do banco.

Select DAT_NASCIMENTO as datNascimento,
           NOM_PESSOA     as nomPessoa,
           NOM_MAE        as nomMae,
           NUM_CPF        as numCpf,
           UF             as uf,
           NOM_CIDADE     as cidade
      from (select row_number() over(partition by num_cpf order by oid_exn_pessoa desc) as ordem,
                   exnpessoaf0_.DAT_NASCIMENTO as DAT_NASCIMENTO,
                   exnpessoaf0_.NOM_PESSOA as NOM_PESSOA,
                   exnpessoaf0_.NOM_MAE as NOM_MAE,
                   estadoexte2_.SGL_UF as UF,
                   cidadeexte1_.NOM_CIDADE_EXTERNA as NOM_CIDADE,
                   exnpessoaf0_.NUM_CPF as NUM_CPF
              from EXN_PESSOA_FISICA exnpessoaf0_
             inner join CIDADE_EXTERNA cidadeexte1_
                on exnpessoaf0_.OID_CIDADE_EXTERNA =
                   cidadeexte1_.OID_CIDADE_EXTERNA
             inner join ESTADO_EXTERNO estadoexte2_
                on cidadeexte1_.OID_ESTADO_EXTERNO =
                   estadoexte2_.OID_ESTADO_EXTERNO
             where nom_pessoa like (:nomPessoa)  -- Passando o valor como ('MARIA%') ou outros nomes comuns demora bastante a consulta
               and num_cpf is not null)
   where ordem = 1
Rafael Correia

Rafael Correia

Responder

Posts

31/07/2015

Jair N.

Bom Dia pelo número de registros citados para buscar uma "maria" apenas limitado na ordem do 1º acho que tem que mexer no índice ou melhorar essa consulta.



Boa noite, estou com um problema com uma consulta em um banco com mais de 100 milhões de registros.
Estava pensando em usar BULK COLLECT , para diminuir a lentidão e o alto consumo do banco.

Select DAT_NASCIMENTO as datNascimento,
           NOM_PESSOA     as nomPessoa,
           NOM_MAE        as nomMae,
           NUM_CPF        as numCpf,
           UF             as uf,
           NOM_CIDADE     as cidade
      from (select row_number() over(partition by num_cpf order by oid_exn_pessoa desc) as ordem,
                   exnpessoaf0_.DAT_NASCIMENTO as DAT_NASCIMENTO,
                   exnpessoaf0_.NOM_PESSOA as NOM_PESSOA,
                   exnpessoaf0_.NOM_MAE as NOM_MAE,
                   estadoexte2_.SGL_UF as UF,
                   cidadeexte1_.NOM_CIDADE_EXTERNA as NOM_CIDADE,
                   exnpessoaf0_.NUM_CPF as NUM_CPF
              from EXN_PESSOA_FISICA exnpessoaf0_
             inner join CIDADE_EXTERNA cidadeexte1_
                on exnpessoaf0_.OID_CIDADE_EXTERNA =
                   cidadeexte1_.OID_CIDADE_EXTERNA
             inner join ESTADO_EXTERNO estadoexte2_
                on cidadeexte1_.OID_ESTADO_EXTERNO =
                   estadoexte2_.OID_ESTADO_EXTERNO
             where nom_pessoa like (:nomPessoa)  -- Passando o valor como ('MARIA%') ou outros nomes comuns demora bastante a consulta
               and num_cpf is not null)
   where ordem = 1
Responder

Gostei + 0

01/09/2015

João Françozo

Boa tarde Rafael,

Conforme a quantidade de registro na tabelas vão ter gargalos, nesse casos já tem partir para o tuning no banco e sql.


Att
João Antonio
Responder

Gostei + 0

03/09/2015

Hector Figueroa

Já pensou em fazer paginação na consulta?
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar