Como realizo una consulta con TOP mas eficiente?

13/08/2004 - 20:10 por Antonio Ortiz | Informe spam
Tengo la siguiente consulta:

"Select Top 1 NoDoc From TbaVenta Where (TipoDoc = 'F') And (NoDoc Is not
Null) Order by IDVenta DESC"

Su funcion es obtener el ultimo folio capturado, existe una forma que sea
mas eficiente de hacerlo?, pues segun he visto en los foros el Top tendra
que obtener todos los registros delimitados en la clausula Where. Hasta hace
poco mi idea era que el motor al hacer la ordenacion, como es Descendente,
obtenia el primer registro y era rapido. Hasta ahora si a sido rapido en
ambientes con no mas de 30000 registros cumpliendo el Where.


Gracias,

Antonio Ortiz Ramirez
asesor en sistemas
ant(a)aortiz.net
www.aortiz.net
www.progvisual.com

Preguntas similare

Leer las respuestas

#6 Isaías
16/08/2004 - 15:55 | Informe spam
Entonces haga un CONVERT de NoDoc a INT
Respuesta Responder a este mensaje
#7 Miguel Egea
18/08/2004 - 18:53 | Informe spam
Create un campo bit calculado como isnull(tucampotext) de tal forma que
valdrá uno cuando sea nulo y cero cuando no lo sea y create el índice que te
digo pero en lugar de contra el campo text, contra lo único que te importa
(este nuevo calculado), estoy seguro que tu top lo hará con 3 lecturas
lógicas (o pocas más )


-
Miguel Egea Gómez
Microsoft SQL-Server MVP
Webmaster de PortalSql.Com
¿Te interesa participar en las reuniones
del grupo de Usuarios de SQL-Server y .NET
Se harán en levante de España, (Alicante o Murcia)?

"Antonio Ortiz" escribió en el mensaje
news:
Por cierto, solo tengo MSDE 1.0 y MSDE 2000

Gracias,

Antonio Ortiz Ramirez
asesor en sistemas
ant(a)aortiz.net
www.aortiz.net
www.progvisual.com
"Miguel Egea" escribió en el mensaje
news:
> Top es tenida en cuenta por el optimizador de consultas y no tiene por


que
> suponer un decremento del rendimiento , asegurate de tener un indice que
> tenga
> los campos (creo que el orden es así, pero un par de pruebas te sacan de
> dudas)
> Tipodoc asc, nodoc asc e idventa desc. Ejecuta set statistics io on y
> revisa el numero de páginas leidas antes y después del índice y nos
cuentas.
>
>
> -
> Miguel Egea Gómez
> Microsoft SQL-Server MVP
> Webmaster de PortalSql.Com
> ¿Te interesa participar en las reuniones
> del grupo de Usuarios de SQL-Server y .NET
> Se harán en levante de España, (Alicante o Murcia)?
>
>
> "Antonio Ortiz" escribió en el mensaje
> news:%
> > Tengo la siguiente consulta:
> >
> > "Select Top 1 NoDoc From TbaVenta Where (TipoDoc = 'F') And (NoDoc Is
not
> > Null) Order by IDVenta DESC"
> >
> > Su funcion es obtener el ultimo folio capturado, existe una forma que
sea
> > mas eficiente de hacerlo?, pues segun he visto en los foros el Top
tendra
> > que obtener todos los registros delimitados en la clausula Where.


Hasta
> hace
> > poco mi idea era que el motor al hacer la ordenacion, como es
Descendente,
> > obtenia el primer registro y era rapido. Hasta ahora si a sido rapido


en
> > ambientes con no mas de 30000 registros cumpliendo el Where.
> >
> >
> > Gracias,
> >
> > Antonio Ortiz Ramirez
> > asesor en sistemas
> > ant(a)aortiz.net
> > www.aortiz.net
> > www.progvisual.com
> >
> >
>
>


Respuesta Responder a este mensaje
#8 Miguel Egea
18/08/2004 - 19:00 | Informe spam
Antonio, si nodoc es de tipo text y vas a almacenar números, lo primero que
deberías hacer es cambiar tu diseño, un campo que puede medir hasta 2gb que
no entra en indices, en fin, tantas cosas no debiera ser usado para ese
propósito (al menos así friamente), cuentanos por que lo tienes text??

Saludos
Miguel Egea
"Antonio Ortiz" escribió en el mensaje
news:%
Como el tipo del campo NoDoc es Text, mi duda es:
'9' > '100' ?

Gracias,

Antonio Ortiz Ramirez
asesor en sistemas
ant(a)aortiz.net
www.aortiz.net
www.progvisual.com
"Isaías" escribió en el mensaje
news:5f0101c48165$72d331e0$
> Creo que...
>
> Select max(NoDoc)
> From TbaVenta
> Where (TipoDoc = 'F')
> And (NoDoc Is not Null)


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida