Opinion con una consulta

18/04/2006 - 19:34 por Abraham | Informe spam
Tengo el sgte escenario

una tabla llamada Kardex

Consecutivo_Kardex Codigo_Producto Existencia
34 001 95
35 002 90
36 001 94
37 002 98

Requiero seleccionar el ultimo registro ingresado de un producto (para el
ejemplo el producto 001)

El resultado de la consulta deberia ser

36 001 94

El campo Consecutivo_Kardex es autonumerico por lo tanto utilizo este para
saber cual es el ultimo registro insertado

he creado la siguiente consulta

SELECT Consecutivo_Kardex, Codigo_Producto, Existencia
FROM Kardex
WHERE Consecutivo_Kardex IN (SELECT MAX(Consecutivo_Kardex) FROM Kardex
WHERE Codigo_Producto ='001')

Segun su criterio esta consulta es recomenda?
pregunto esto ya que estoy haciendo dos consulta sobre una tabla
relativamente grande (mas de 500,000 registros)

Conocen alguna forma mas eficiente de hacerlo?

Gracias por las sugerencias que puedan darme.


Abraham

Preguntas similare

Leer las respuestas

#1 SYoung
18/04/2006 - 22:28 | Informe spam
Me parece que esta bien siempre y cuando tengas el Consecutivo_Kardex como un
PRIMARY KEY NONCLUSTERED y las tres columnas como un CLUSTERED index.

"Abraham" escribió:

Tengo el sgte escenario

una tabla llamada Kardex

Consecutivo_Kardex Codigo_Producto Existencia
34 001 95
35 002 90
36 001 94
37 002 98

Requiero seleccionar el ultimo registro ingresado de un producto (para el
ejemplo el producto 001)

El resultado de la consulta deberia ser

36 001 94

El campo Consecutivo_Kardex es autonumerico por lo tanto utilizo este para
saber cual es el ultimo registro insertado

he creado la siguiente consulta

SELECT Consecutivo_Kardex, Codigo_Producto, Existencia
FROM Kardex
WHERE Consecutivo_Kardex IN (SELECT MAX(Consecutivo_Kardex) FROM Kardex
WHERE Codigo_Producto ='001')

Segun su criterio esta consulta es recomenda?
pregunto esto ya que estoy haciendo dos consulta sobre una tabla
relativamente grande (mas de 500,000 registros)

Conocen alguna forma mas eficiente de hacerlo?

Gracias por las sugerencias que puedan darme.


Abraham







Respuesta Responder a este mensaje
#2 BitOne®
19/04/2006 - 06:23 | Informe spam
La consulta suena perfecta

SELECT Consecutivo_Kardex, Codigo_Producto, Existencia
FROM Kardex
WHERE Consecutivo_Kardex IN (SELECT MAX(Consecutivo_Kardex)
FROM Kardex
WHERE Codigo_Producto
='001')

Solo quitale el valor constante :) 001 y coloca una variable, y para no
abundarte mucho de lo mismo
Visita este sitio tiene un muy buen documento.

http://www.sqlgurus.org/dotnetnuke/...fault.aspx

bajo este titulo:

Como manejar los datos autonumericos

escrito por : Maxi

Saludos,

BitOne®.


-

"Abraham" <sistemasacltda.Arroba.hotmail.com> escribió en el mensaje
news:
Tengo el sgte escenario

una tabla llamada Kardex

Consecutivo_Kardex Codigo_Producto Existencia
34 001 95
35 002 90
36 001 94
37 002 98

Requiero seleccionar el ultimo registro ingresado de un producto (para el
ejemplo el producto 001)

El resultado de la consulta deberia ser

36 001 94

El campo Consecutivo_Kardex es autonumerico por lo tanto utilizo este para
saber cual es el ultimo registro insertado

he creado la siguiente consulta

SELECT Consecutivo_Kardex, Codigo_Producto, Existencia
FROM Kardex
WHERE Consecutivo_Kardex IN (SELECT MAX(Consecutivo_Kardex) FROM Kardex
WHERE Codigo_Producto ='001')

Segun su criterio esta consulta es recomenda?
pregunto esto ya que estoy haciendo dos consulta sobre una tabla
relativamente grande (mas de 500,000 registros)

Conocen alguna forma mas eficiente de hacerlo?

Gracias por las sugerencias que puedan darme.


Abraham






Respuesta Responder a este mensaje
#3 Abraham
19/04/2006 - 18:06 | Informe spam
Gracias por tus sugerencias

"SYoung" escribió en el mensaje
news:
Me parece que esta bien siempre y cuando tengas el Consecutivo_Kardex como
un
PRIMARY KEY NONCLUSTERED y las tres columnas como un CLUSTERED index.

"Abraham" escribió:

Tengo el sgte escenario

una tabla llamada Kardex

Consecutivo_Kardex Codigo_Producto Existencia
34 001 95
35 002 90
36 001 94
37 002 98

Requiero seleccionar el ultimo registro ingresado de un producto (para
el
ejemplo el producto 001)

El resultado de la consulta deberia ser

36 001 94

El campo Consecutivo_Kardex es autonumerico por lo tanto utilizo este
para
saber cual es el ultimo registro insertado

he creado la siguiente consulta

SELECT Consecutivo_Kardex, Codigo_Producto, Existencia
FROM Kardex
WHERE Consecutivo_Kardex IN (SELECT MAX(Consecutivo_Kardex) FROM Kardex
WHERE Codigo_Producto ='001')

Segun su criterio esta consulta es recomenda?
pregunto esto ya que estoy haciendo dos consulta sobre una tabla
relativamente grande (mas de 500,000 registros)

Conocen alguna forma mas eficiente de hacerlo?

Gracias por las sugerencias que puedan darme.


Abraham







Respuesta Responder a este mensaje
#4 Abraham
19/04/2006 - 18:07 | Informe spam
Gracias, revisara el link que pasaste
"BitOne®" escribió en el mensaje
news:

La consulta suena perfecta

SELECT Consecutivo_Kardex, Codigo_Producto, Existencia
FROM Kardex
WHERE Consecutivo_Kardex IN (SELECT MAX(Consecutivo_Kardex)
FROM Kardex
WHERE
Codigo_Producto
='001')

Solo quitale el valor constante :) 001 y coloca una variable, y para no
abundarte mucho de lo mismo
Visita este sitio tiene un muy buen documento.

http://www.sqlgurus.org/dotnetnuke/...fault.aspx

bajo este titulo:

Como manejar los datos autonumericos

escrito por : Maxi

Saludos,

BitOne®.


-

"Abraham" <sistemasacltda.Arroba.hotmail.com> escribió en el mensaje
news:
Tengo el sgte escenario

una tabla llamada Kardex

Consecutivo_Kardex Codigo_Producto Existencia
34 001 95
35 002 90
36 001 94
37 002 98

Requiero seleccionar el ultimo registro ingresado de un producto (para
el
ejemplo el producto 001)

El resultado de la consulta deberia ser

36 001 94

El campo Consecutivo_Kardex es autonumerico por lo tanto utilizo este
para
saber cual es el ultimo registro insertado

he creado la siguiente consulta

SELECT Consecutivo_Kardex, Codigo_Producto, Existencia
FROM Kardex
WHERE Consecutivo_Kardex IN (SELECT MAX(Consecutivo_Kardex) FROM Kardex
WHERE Codigo_Producto ='001')

Segun su criterio esta consulta es recomenda?
pregunto esto ya que estoy haciendo dos consulta sobre una tabla
relativamente grande (mas de 500,000 registros)

Conocen alguna forma mas eficiente de hacerlo?

Gracias por las sugerencias que puedan darme.


Abraham










Respuesta Responder a este mensaje
#5 Jorge Gonzalez
25/04/2006 - 20:08 | Informe spam
Otra opción interesante es:

SELECT top 1 *
FROM Kardex
WHERE Codigo_Producto = '001'
ORDER BY Consecutivo_Cardex DESC

Creo que es igual de eficiente ( aunque tendrías que veriricar eso revisando
el query plan y haciendo algunas pruebas)
y es un poco más clara al no tener una consulta interna.




"Abraham" <sistemasacltda.Arroba.hotmail.com> escribió en el mensaje
news:
Tengo el sgte escenario

una tabla llamada Kardex

Consecutivo_Kardex Codigo_Producto Existencia
34 001 95
35 002 90
36 001 94
37 002 98

Requiero seleccionar el ultimo registro ingresado de un producto (para el
ejemplo el producto 001)

El resultado de la consulta deberia ser

36 001 94

El campo Consecutivo_Kardex es autonumerico por lo tanto utilizo este para
saber cual es el ultimo registro insertado

he creado la siguiente consulta

SELECT Consecutivo_Kardex, Codigo_Producto, Existencia
FROM Kardex
WHERE Consecutivo_Kardex IN (SELECT MAX(Consecutivo_Kardex) FROM Kardex
WHERE Codigo_Producto ='001')

Segun su criterio esta consulta es recomenda?
pregunto esto ya que estoy haciendo dos consulta sobre una tabla
relativamente grande (mas de 500,000 registros)

Conocen alguna forma mas eficiente de hacerlo?

Gracias por las sugerencias que puedan darme.


Abraham






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