limite para not in?

Scripts Diversos para o Oracle SQL*Plus. (Relacionado a ferramenta Oracle SQL*Plus, para questões de SQL, usar o forum SQL)
Responder
eduardo
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 56
Registrado em: Ter, 10 Jul 2007 3:24 pm
Localização: sp
Sempre há algo a aprender....

olá ´pessoal, eu estou com uma dúvida:

eu tenho 1 tabela de clientes com 2700 linhas e uma tabela de endereco de clientes com 2600 linhas; o join entre elas é a coluna cod_cliente

fiz o select

Selecionar tudo

select * 
from clientes
where cod_cliente not in ( select cod_cliente 
                                                         from ender_cliente);
pra minha surpresa não voltou nada; se eu usar minus retorna mas ai a query e diferente:

Selecionar tudo

select cod_cliente 
 from clientes
minus
select cod_cliente 
 from ender_cliente;
nesse caso, os 100 clientes sem endereço aparecem só que eu queria retornar todas as colunas d atabela clientes e não só o código.

eu terei que fazer 1 procedure com cursor pra isso?

existe limite de linhas para usar not in?

desde já agradeço a quem poder ajudar
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brow, não sei lhe informar precisamente a quantidade, mas, creio que deva ter sim, um limite pra not in.

Só uma dica, principalmente se tua busca estourou o limite do not in: É indicado utilizar o EXISTS (aqui no fórum existem exemplos interessantes), pois o mesmo é MUITO mais performático, ok?

Segue um dos vários links encontrados aqui no fórum, para a busca de EXISTS:

http://glufke.net/oracle/viewtopic.php? ... ght=exists

Qualquer dúvida, manda pra gente.
ricardorauber
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 96
Registrado em: Qua, 21 Jun 2006 11:33 pm
Localização: Canoas RS

É verdade, eu só uso o NOT IN para poucos valores estáticos em procedimentos. Assim como nosso amigo falou, o EXISTS é a solução para todos os nossos problemas hehehe e sua consulta ficaria assim:

Selecionar tudo

SELECT *
  FROM clientes c
 WHERE NOT EXISTS (SELECT 1
                     FROM ender_cliente e
                    WHERE e.cod_cliente = c.cod_cliente);
galluzzo
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 5
Registrado em: Qua, 07 Mai 2008 4:30 pm
Localização: Rio de Janeiro

O limite para o in é de 1000 valores!
gokden
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 264
Registrado em: Dom, 19 Ago 2007 8:18 pm
Localização: Ribeirão Preto - SP
Lucas de Souza

OCA Developer
Analista de sistemas

hmm.... esse limite foi testado em qual banco ??
será qui no 10g esse limite é maior ??
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 6 visitantes