[firebase-br] Duvida Select

Sandro Souza escovadordebits em gmail.com
Ter Set 9 12:30:44 -03 2014


Beleza meu nobre amigo.

Fico muito feliz em ter ajudado. :D

Qualquer coisa é só vir aqui para o fórum.

Em 9 de setembro de 2014 12:26, Rodrigo <firebase em dominioinf.com.br>
escreveu:

> Bom dia Sandro,
>
> Muito obrigado pela resposta, funcionou muito melhor.
>
> Entendo que seria muito melhor usar um generator, mas o cliente quer que
> quando cancele um pedido, aquele numero seja recuperado
> e usado em outro pedido.
>
> Por isso isso dessa forma, ajudou muito
>
> Grato,
>
> Rodrigo
>
> -----Mensagem Original----- From: Sandro Souza
> Sent: Tuesday, September 09, 2014 11:57 AM
> To: FireBase
> Subject: Re: [firebase-br] Duvida Select
>
>
> Bom dia/tarde/noite Rodrigo.
>
> Necessita realmente de uma tabela de números de pedido? Porque não utilizar
> simplesmente uma sequence/gerador?
>
> Bom, independente disso, você poderia testar o seguinte SELECT?
>
> SELECT FIRST 1
>  A.NUMPEDIDO
> FROM
>  NUMPEDIDOS A
> WHERE
>  (A.USADO = '') AND
>  NOT EXISTS(SELECT B.NUMPEDIDO FROM PEDIDOS B WHERE B.NUMPEDIDO =
> A.NUMPEDIDO);
>
> Caso não haja um índice para a coluna USADO da tabela NUMPEDIDOS, crie-o,
> como no exemplo abaixo:
>
> CREATE INDEX IX_NUMPEDIDOS_USADO ON NUMPEDIDOS(USADO);
>
> Acredito que já deva existir um índice para a coluna NUMPEDIDO da tabela
> PEDIDOS, até porque eu imagino que seja a chave primária dessa tabela. Mas
> caso ainda não haja, crie-o também.
>
> Imagino também que você esteja preenchendo a coluna USADO da tabela
> NUMPEDIDOS com algum valor assim que usa um dos números de pedido.
>
> Ainda acho que seria muito melhor usar uma sequence ( = generator), mas
> cada caso é um caso.
>
> Espero ter ajudado mais que atrapalhado. :D
>
> Em 9 de setembro de 2014 11:41, Rodrigo <firebase em dominioinf.com.br>
> escreveu:
>
>  Bom dia a todos.
>>
>> Fiz um select e ele esta funcionando, porém esta muito lento, pois ha
>> muitos registros no banco de dados.
>>
>> select N.NUMPEDIDO AS NUMPEDIDO from numpedidos N where N.USADO = '' and
>> (SELECT COUNT(*) FROM PEDIDOS WHERE NUMPEDIDO=N.NUMPEDIDO) = 0
>>
>> nesse select retorno o proximo numero de pedido, porem esse numero nao
>> pode repetir na tabela pedidos, entao
>> faço uma pesquisa para verificar se ele ja nao esta sendo usado. Percebi
>> que nesses selects não usam os indices criados. Por isso talvez fique
>> lento.
>>
>> Tentei fazer assim:
>>
>> select N.NUMPEDIDO AS NUMPEDIDO from numpedidos N where N.USADO = '' and
>> N.NUMPEDIDO NOT IN (SELECT NUMPEDIDO FROM PEDIDOS)
>>
>> Funciona mais rapido porem nao retorna os mesmos resultados do que o outro
>> select acima.
>>
>> Existe alguma forma de melhorar esse select, ou uma forma de ele usar os
>> indices criados ?
>>
>> Grato
>>
>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>> http://www.firebase.com.br/fb/artigo.php?id=1107
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
>>  ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista