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

#1 Isaías
13/08/2004 - 20:43 | Informe spam
Creo que...

Select max(NoDoc)
From TbaVenta
Where (TipoDoc = 'F')
And (NoDoc Is not Null)
Respuesta Responder a este mensaje
#2 Miguel Egea
13/08/2004 - 20:50 | Informe spam
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
#3 Antonio Ortiz
13/08/2004 - 23:30 | Informe spam
el problema es que NoDoc es de tipo 'Text', tengo un evento antes de guardar
la pantalla que busca el ultimo registro guardado de este tipo y obtiene
val('NoDoc') +1

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
#4 Antonio Ortiz
13/08/2004 - 23:31 | Informe spam
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)
Respuesta Responder a este mensaje
#5 Antonio Ortiz
13/08/2004 - 23:37 | Informe spam
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
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida