Lentidão na consulta por conta do uso do LIKE
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.
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 = 1Rafael Correia
Curtidas 0
Respostas
Jair N.
30/07/2015
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.
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 = 1GOSTEI 0
João Françozo
30/07/2015
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
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
GOSTEI 0
Hector Figueroa
30/07/2015
Já pensou em fazer paginação na consulta?
GOSTEI 0