MS SQL Server, bastante limitado

18/05/2007 - 13:47 por Jose Manuel Tella Llop | Informe spam
"Limitado" con doble sentido. Mucha gente defiende a capa y espada SQL
Server. Yo antes pensaba que SQL Server (mssql para los amigos) no era TAN
malo como decían, por lo que habría tratado con él en clase, con el
administrador que lleva, etc. Nunca lo había usado en entornos de
producción exahustivos como ahora, ni tampoco me había enfrentado a
problemas a la hora de rendimiento.
Bien, el caso de prueba es el siguiente, un simple paginador, por ejemplo a
una tabla con 100 registros. Quiero los registros del 50 al 60.

Simplemente, no se puede. Algo tan sencillo como en MySQL o Postgre sería
con un LIMIT 60, 10, aquí no se puede.

Es algo que hemos discutido hoy y se han propuesto soluciones: sacar los
100 registros y dejarlos en memoria, en $_SESSION, crear una tabla temporal
y dejar ahí el resultados, hacer vistas que comprendan menos datos... todo
ello poco escalable y extensible.

Y hablo con 100 registros, imaginemos miles, millones... Desde luego no me
imagino a sitios como Yahoo!, Flickr, Twitter, del.icio.us, Digg, Meneame
(por decir sitios que usan DBs como MySQL o Postgre) en los que le digas
que quieres ver la página 100 de un listado y se tire 20 segundos cacheando
resultados para que luego te vaya rápido, o guardando en memoria, ni nada
de esas ñapas que habría que hacer con mssql.

Pero bueno, al menos con mssql hay un muy buen soporte técnico que en otros
casos igual no tienes, y sabes los recursos que necestas para que todo vaya
bien. http://xergio.net/escrito-457/ms-sq...itado.html


TELLA A LA CALLE
http://www.jmtella.com/?TELLA_A_LA_CALLE

Preguntas similare

Leer las respuestas

#1 Anders Altberg
18/05/2007 - 14:57 | Informe spam
Hay una razón por que no se puede. En la teoria de tablas relationales los
100 registros nu es una lista fisica y ordenada, donde cada registro tiene
un numero implicito; un tabla es un conjunto? de datos sin orden. No existe
un RECNO() un una tabla de un sistema relacional.
Las clausulas LIMIT, y también TOP, no existen en las normas del languaje
SQL. LIMIT y TOP son suplementos al lenguaje del vendedor.

Si hay un columna 'numero', no hay problema:
SELECT ... WHERE numero BETWEEN 60 AND 70.

Si hay una fecha y quieres decir 60-70 en el orden de la fecha, es posible.
SELECT ... FROM T1 WHERE 60 >= (SELECT COUNT(*) FROM T1 AS T2 ;
WHERE T1.fecha < T2.fecha ) ORDER BY fecha TOP 10

(TOP existe en el lenguaje Transact SQL, T-SQL, de SQL Server. )
-Anders

"Jose Manuel Tella Llop" wrote in message
news:%23bc$
"Limitado" con doble sentido. Mucha gente defiende a capa y espada SQL
Server. Yo antes pensaba que SQL Server (mssql para los amigos) no era TAN
malo como decían, por lo que habría tratado con él en clase, con el
administrador que lleva, etc. Nunca lo había usado en entornos de
producción exahustivos como ahora, ni tampoco me había enfrentado a
problemas a la hora de rendimiento.
Bien, el caso de prueba es el siguiente, un simple paginador, por ejemplo
a
una tabla con 100 registros. Quiero los registros del 50 al 60.

Simplemente, no se puede. Algo tan sencillo como en MySQL o Postgre sería
con un LIMIT 60, 10, aquí no se puede.

Es algo que hemos discutido hoy y se han propuesto soluciones: sacar los
100 registros y dejarlos en memoria, en $_SESSION, crear una tabla
temporal
y dejar ahí el resultados, hacer vistas que comprendan menos datos... todo
ello poco escalable y extensible.

Y hablo con 100 registros, imaginemos miles, millones... Desde luego no me
imagino a sitios como Yahoo!, Flickr, Twitter, del.icio.us, Digg, Meneame
(por decir sitios que usan DBs como MySQL o Postgre) en los que le digas
que quieres ver la página 100 de un listado y se tire 20 segundos
cacheando
resultados para que luego te vaya rápido, o guardando en memoria, ni nada
de esas ñapas que habría que hacer con mssql.

Pero bueno, al menos con mssql hay un muy buen soporte técnico que en
otros
casos igual no tienes, y sabes los recursos que necestas para que todo
vaya
bien. http://xergio.net/escrito-457/ms-sq...itado.html


TELLA A LA CALLE
http://www.jmtella.com/?TELLA_A_LA_CALLE



Respuesta Responder a este mensaje
#2 Anders Altberg
18/05/2007 - 14:57 | Informe spam
Hay una razón por que no se puede. En la teoria de tablas relationales los
100 registros nu es una lista fisica y ordenada, donde cada registro tiene
un numero implicito; un tabla es un conjunto? de datos sin orden. No existe
un RECNO() un una tabla de un sistema relacional.
Las clausulas LIMIT, y también TOP, no existen en las normas del languaje
SQL. LIMIT y TOP son suplementos al lenguaje del vendedor.

Si hay un columna 'numero', no hay problema:
SELECT ... WHERE numero BETWEEN 60 AND 70.

Si hay una fecha y quieres decir 60-70 en el orden de la fecha, es posible.
SELECT ... FROM T1 WHERE 60 >= (SELECT COUNT(*) FROM T1 AS T2 ;
WHERE T1.fecha < T2.fecha ) ORDER BY fecha TOP 10

(TOP existe en el lenguaje Transact SQL, T-SQL, de SQL Server. )
-Anders

"Jose Manuel Tella Llop" wrote in message
news:%23bc$
"Limitado" con doble sentido. Mucha gente defiende a capa y espada SQL
Server. Yo antes pensaba que SQL Server (mssql para los amigos) no era TAN
malo como decían, por lo que habría tratado con él en clase, con el
administrador que lleva, etc. Nunca lo había usado en entornos de
producción exahustivos como ahora, ni tampoco me había enfrentado a
problemas a la hora de rendimiento.
Bien, el caso de prueba es el siguiente, un simple paginador, por ejemplo
a
una tabla con 100 registros. Quiero los registros del 50 al 60.

Simplemente, no se puede. Algo tan sencillo como en MySQL o Postgre sería
con un LIMIT 60, 10, aquí no se puede.

Es algo que hemos discutido hoy y se han propuesto soluciones: sacar los
100 registros y dejarlos en memoria, en $_SESSION, crear una tabla
temporal
y dejar ahí el resultados, hacer vistas que comprendan menos datos... todo
ello poco escalable y extensible.

Y hablo con 100 registros, imaginemos miles, millones... Desde luego no me
imagino a sitios como Yahoo!, Flickr, Twitter, del.icio.us, Digg, Meneame
(por decir sitios que usan DBs como MySQL o Postgre) en los que le digas
que quieres ver la página 100 de un listado y se tire 20 segundos
cacheando
resultados para que luego te vaya rápido, o guardando en memoria, ni nada
de esas ñapas que habría que hacer con mssql.

Pero bueno, al menos con mssql hay un muy buen soporte técnico que en
otros
casos igual no tienes, y sabes los recursos que necestas para que todo
vaya
bien. http://xergio.net/escrito-457/ms-sq...itado.html


TELLA A LA CALLE
http://www.jmtella.com/?TELLA_A_LA_CALLE



Respuesta Responder a este mensaje
#3 Anders Altberg
18/05/2007 - 14:57 | Informe spam
Hay una razón por que no se puede. En la teoria de tablas relationales los
100 registros nu es una lista fisica y ordenada, donde cada registro tiene
un numero implicito; un tabla es un conjunto? de datos sin orden. No existe
un RECNO() un una tabla de un sistema relacional.
Las clausulas LIMIT, y también TOP, no existen en las normas del languaje
SQL. LIMIT y TOP son suplementos al lenguaje del vendedor.

Si hay un columna 'numero', no hay problema:
SELECT ... WHERE numero BETWEEN 60 AND 70.

Si hay una fecha y quieres decir 60-70 en el orden de la fecha, es posible.
SELECT ... FROM T1 WHERE 60 >= (SELECT COUNT(*) FROM T1 AS T2 ;
WHERE T1.fecha < T2.fecha ) ORDER BY fecha TOP 10

(TOP existe en el lenguaje Transact SQL, T-SQL, de SQL Server. )
-Anders

"Jose Manuel Tella Llop" wrote in message
news:%23bc$
"Limitado" con doble sentido. Mucha gente defiende a capa y espada SQL
Server. Yo antes pensaba que SQL Server (mssql para los amigos) no era TAN
malo como decían, por lo que habría tratado con él en clase, con el
administrador que lleva, etc. Nunca lo había usado en entornos de
producción exahustivos como ahora, ni tampoco me había enfrentado a
problemas a la hora de rendimiento.
Bien, el caso de prueba es el siguiente, un simple paginador, por ejemplo
a
una tabla con 100 registros. Quiero los registros del 50 al 60.

Simplemente, no se puede. Algo tan sencillo como en MySQL o Postgre sería
con un LIMIT 60, 10, aquí no se puede.

Es algo que hemos discutido hoy y se han propuesto soluciones: sacar los
100 registros y dejarlos en memoria, en $_SESSION, crear una tabla
temporal
y dejar ahí el resultados, hacer vistas que comprendan menos datos... todo
ello poco escalable y extensible.

Y hablo con 100 registros, imaginemos miles, millones... Desde luego no me
imagino a sitios como Yahoo!, Flickr, Twitter, del.icio.us, Digg, Meneame
(por decir sitios que usan DBs como MySQL o Postgre) en los que le digas
que quieres ver la página 100 de un listado y se tire 20 segundos
cacheando
resultados para que luego te vaya rápido, o guardando en memoria, ni nada
de esas ñapas que habría que hacer con mssql.

Pero bueno, al menos con mssql hay un muy buen soporte técnico que en
otros
casos igual no tienes, y sabes los recursos que necestas para que todo
vaya
bien. http://xergio.net/escrito-457/ms-sq...itado.html


TELLA A LA CALLE
http://www.jmtella.com/?TELLA_A_LA_CALLE



Respuesta Responder a este mensaje
#4 Anders Altberg
18/05/2007 - 14:57 | Informe spam
Hay una razón por que no se puede. En la teoria de tablas relationales los
100 registros nu es una lista fisica y ordenada, donde cada registro tiene
un numero implicito; un tabla es un conjunto? de datos sin orden. No existe
un RECNO() un una tabla de un sistema relacional.
Las clausulas LIMIT, y también TOP, no existen en las normas del languaje
SQL. LIMIT y TOP son suplementos al lenguaje del vendedor.

Si hay un columna 'numero', no hay problema:
SELECT ... WHERE numero BETWEEN 60 AND 70.

Si hay una fecha y quieres decir 60-70 en el orden de la fecha, es posible.
SELECT ... FROM T1 WHERE 60 >= (SELECT COUNT(*) FROM T1 AS T2 ;
WHERE T1.fecha < T2.fecha ) ORDER BY fecha TOP 10

(TOP existe en el lenguaje Transact SQL, T-SQL, de SQL Server. )
-Anders

"Jose Manuel Tella Llop" wrote in message
news:%23bc$
"Limitado" con doble sentido. Mucha gente defiende a capa y espada SQL
Server. Yo antes pensaba que SQL Server (mssql para los amigos) no era TAN
malo como decían, por lo que habría tratado con él en clase, con el
administrador que lleva, etc. Nunca lo había usado en entornos de
producción exahustivos como ahora, ni tampoco me había enfrentado a
problemas a la hora de rendimiento.
Bien, el caso de prueba es el siguiente, un simple paginador, por ejemplo
a
una tabla con 100 registros. Quiero los registros del 50 al 60.

Simplemente, no se puede. Algo tan sencillo como en MySQL o Postgre sería
con un LIMIT 60, 10, aquí no se puede.

Es algo que hemos discutido hoy y se han propuesto soluciones: sacar los
100 registros y dejarlos en memoria, en $_SESSION, crear una tabla
temporal
y dejar ahí el resultados, hacer vistas que comprendan menos datos... todo
ello poco escalable y extensible.

Y hablo con 100 registros, imaginemos miles, millones... Desde luego no me
imagino a sitios como Yahoo!, Flickr, Twitter, del.icio.us, Digg, Meneame
(por decir sitios que usan DBs como MySQL o Postgre) en los que le digas
que quieres ver la página 100 de un listado y se tire 20 segundos
cacheando
resultados para que luego te vaya rápido, o guardando en memoria, ni nada
de esas ñapas que habría que hacer con mssql.

Pero bueno, al menos con mssql hay un muy buen soporte técnico que en
otros
casos igual no tienes, y sabes los recursos que necestas para que todo
vaya
bien. http://xergio.net/escrito-457/ms-sq...itado.html


TELLA A LA CALLE
http://www.jmtella.com/?TELLA_A_LA_CALLE



Respuesta Responder a este mensaje
#5 Anders Altberg
18/05/2007 - 15:06 | Informe spam
Corección:
SELECT * FROM Tabla AS T1 WHERE 60 <(SELECT COUNT(*) FROM Tabbla AS T2
WHERE T1.fecha>=T2.fecha )
ORDER BY fecha TOP 10

-Anders

"Jose Manuel Tella Llop" wrote in message
news:%23bc$
"Limitado" con doble sentido. Mucha gente defiende a capa y espada SQL
Server. Yo antes pensaba que SQL Server (mssql para los amigos) no era TAN
malo como decían, por lo que habría tratado con él en clase, con el
administrador que lleva, etc. Nunca lo había usado en entornos de
producción exahustivos como ahora, ni tampoco me había enfrentado a
problemas a la hora de rendimiento.
Bien, el caso de prueba es el siguiente, un simple paginador, por ejemplo
a
una tabla con 100 registros. Quiero los registros del 50 al 60.

Simplemente, no se puede. Algo tan sencillo como en MySQL o Postgre sería
con un LIMIT 60, 10, aquí no se puede.

Es algo que hemos discutido hoy y se han propuesto soluciones: sacar los
100 registros y dejarlos en memoria, en $_SESSION, crear una tabla
temporal
y dejar ahí el resultados, hacer vistas que comprendan menos datos... todo
ello poco escalable y extensible.

Y hablo con 100 registros, imaginemos miles, millones... Desde luego no me
imagino a sitios como Yahoo!, Flickr, Twitter, del.icio.us, Digg, Meneame
(por decir sitios que usan DBs como MySQL o Postgre) en los que le digas
que quieres ver la página 100 de un listado y se tire 20 segundos
cacheando
resultados para que luego te vaya rápido, o guardando en memoria, ni nada
de esas ñapas que habría que hacer con mssql.

Pero bueno, al menos con mssql hay un muy buen soporte técnico que en
otros
casos igual no tienes, y sabes los recursos que necestas para que todo
vaya
bien. http://xergio.net/escrito-457/ms-sq...itado.html


TELLA A LA CALLE
http://www.jmtella.com/?TELLA_A_LA_CALLE



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida