[firebase-br] ¿Se puede mejorar esta consulta?

Rodrigo Gomes da Silva rodrgomes em gmail.com
Seg Jun 24 11:44:40 -03 2013


Pode usar com starting que passaria a usar indice pelo RUC (se não tiver um
teria de criar)

SELECT
     (SELECT COUNT(*) FROM CLIENTES C WHERE C.CLI_CODSUC >= 0 AND
C.CLI_RUCXXX starting with '44444401') AS N_CONSUMIDOR_FINAL,
     (SELECT COUNT(*) FROM CLIENTES C WHERE C.CLI_CODSUC >= 0 AND
C.CLI_RUCXXX starting with = '77777701') AS N_AGENTE_DIPLOMATICO,
     (SELECT COUNT(*) FROM CLIENTES C WHERE C.CLI_CODSUC >= 0 AND
C.CLI_RUCXXX starting with = '88888801') AS N_CLIENTE_EXTERIOR


2013/6/24 W O <sistemas2000profesional em gmail.com>

> Hola a todos
>
> Necesito saber si hay al menos un cliente cuyo RUC sea '44444401' o cuyo
> RUC sea '77777701' o cuyo RUC sea '88888801', así que escribí la consulta
> de abajo:
>
> SELECT
>      (SELECT COUNT(*) FROM CLIENTES C WHERE C.CLI_CODSUC >= 0 AND
> LEFT(C.CLI_RUCXXX, 8) = '44444401') AS N_CONSUMIDOR_FINAL,
>      (SELECT COUNT(*) FROM CLIENTES C WHERE C.CLI_CODSUC >= 0 AND
> LEFT(C.CLI_RUCXXX, 8) = '77777701') AS N_AGENTE_DIPLOMATICO,
>      (SELECT COUNT(*) FROM CLIENTES C WHERE C.CLI_CODSUC >= 0 AND
> LEFT(C.CLI_RUCXXX, 8) = '88888801') AS N_CLIENTE_EXTERIOR
>   FROM
>      VENTASCAB V
>   WHERE
>      V.VTC_CODSUC >= 0;
>
> En cada caso, usé SELECT COUNT(*) para saber si hay clientes con ese RUC,
> pero realmente no necesito conocer la cantidad total sino solamente si hay
> al menos un cliente que tiene ese RUC.
>
> En realidad la tabla no es muy grande, tiene solamente unos 10.000
> registros así que obtener la información es rápido pero quería saber si se
> puede mejorar la consulta para no usar SELECT COUNT(*)
>
> De la manera en que está, si N_CONSUMIDOR_FINAL es mayor que 0 yo sé que
> hay al menos un consumidor final. Pero solamente necesito saber si hay un
> consumidor final o no, no necesito saber cuantos son, así que recorrer la
> tabla de CLIENTES tres veces me parece que es una pérdida de tiempo.
>
> ¿Se puede mejorar esta consulta para que sea más rápida?
>
> Saludos.
>
> Walter.
> ______________________________________________
> 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