Orden de registros sin Order By

29/12/2004 - 22:42 por Jose | Informe spam
Si yo tengo un SELECT SIN la cláusula ORDER BY sobre una tabla (una sola)
que tiene una clave primaria clustered, se espera que los registros
seleccionados se muestren SIEMPRE en el orden de la clave primaria ?

ej. SELECT * FROM MITABLA

Preguntas similare

Leer las respuestas

#16 Eladio Rincón
30/12/2004 - 20:34 | Informe spam
Hola Maxi,

yo no sabría demostralo porque no es determinista; como bien sabes, sucede
en ciertas ocasiones en consultas que hacen uso de paralelismo; de todas
formas yo considero como axioma tener que incluir la cláusula ORDER BY si
quiero que las filas se devuelvan en un orden determinado...

Eladio Rincón
SQL Server MVP

Solid Quality Learning (http://www.solidqualitylearning.com)
"Comparte lo que sabes, aprende lo que no sepas", FGG

Consulte el histórico del grupo en Google
http://groups.google.com/groups?gro....sqlserver

¿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)?

"Maxi" wrote in message
news:
Hola, es cierto lo que dices pero... podrias demostrarlo porfavor a ver en
que casos no se da como indicas ;)


Salu2
Maxi


"Asterion" escribió en el mensaje
news:
> No estoy de acuerdo.
>
> En general saldrán ordenados, pero no hay ningún mecanismo que te


asegure
> que SIEMPRE saldrán en el orden de la clave primaria. Depende


fuertemente
> de
> la cantidad de inserciones y borrados.
>


Respuesta Responder a este mensaje
#17 Maxi
30/12/2004 - 20:44 | Informe spam
Hola totalmente deacuerdo contigo, yo tambien uso el order by como axioma
:-)


Salu2
Maxi


"Eladio Rincón" escribió en el mensaje
news:
Hola Maxi,

yo no sabría demostralo porque no es determinista; como bien sabes, sucede
en ciertas ocasiones en consultas que hacen uso de paralelismo; de todas
formas yo considero como axioma tener que incluir la cláusula ORDER BY si
quiero que las filas se devuelvan en un orden determinado...

Eladio Rincón
SQL Server MVP

Solid Quality Learning (http://www.solidqualitylearning.com)
"Comparte lo que sabes, aprende lo que no sepas", FGG

Consulte el histórico del grupo en Google
http://groups.google.com/groups?gro....sqlserver

¿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)?

"Maxi" wrote in message
news:
Hola, es cierto lo que dices pero... podrias demostrarlo porfavor a ver
en
que casos no se da como indicas ;)


Salu2
Maxi


"Asterion" escribió en el mensaje
news:
> No estoy de acuerdo.
>
> En general saldrán ordenados, pero no hay ningún mecanismo que te


asegure
> que SIEMPRE saldrán en el orden de la clave primaria. Depende


fuertemente
> de
> la cantidad de inserciones y borrados.
>






Respuesta Responder a este mensaje
#18 Salvador Ramos
31/12/2004 - 09:33 | Informe spam
Además de lo que indica Eladio, otro factor que puede ocasionar el que no se
devuelvan los registros ordenados es tener más de un procesador, y que ambos
estén ejecutando la consulta en paralelo.

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

"Eladio Rincón" escribió en el mensaje
news:
Hola,
el problema del que se está hablando es de la recuperación de registros no
de inserción/actualización ...

creo que lo que intentas decir es que en algunos escenarios, la ordenación
de los registros insertados puede ser que no sea físicamente
ascendente/descendente en función del índice agrupado...

la cosa es la siguiente: el hecho de que las filas estén ordenadas en
función del índice agrupado no significa que en cada página los datos de
la
fila estén ordenados, lo que si podemos asegurar es que los punteros que
están al final de la página, apuntan a la siguiente fila en la ordenación;
a
ver:

Voy a utilizar:
P para nombrar la zona donde están ubicados los punteros,
F para la zona de las filas; al principio de cada linea pongo la dirección
física, por ejemplo 00-01, 00-02, etc;
para referenciar a una dirección física desde la zona de punteros lo voy a
hacer con <00-01>;
[] para indicar el valor del índice agrupado y
{} para un valor varchar ... a ver como queda...

Dada la página 1 de una tabla:

F:
00-01 [1]{abc}
00-02 [2]{ab}
00-03 [5]{ddd}
00-04 [4]{eee}

P: <00-03><00-04><00-02><00-01>

fijaros que en P, el orden es inverso y es porque en realidad se lee en
orden inverso desde el final de la página, por otro lado, las filas no
están
físicamente ordenadas

Eladio Rincón
SQL Server MVP

Solid Quality Learning (http://www.solidqualitylearning.com)
"Comparte lo que sabes, aprende lo que no sepas", FGG

Consulte el histórico del grupo en Google
http://groups.google.com/groups?gro....sqlserver

¿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)?

"Asterion" wrote in message
news:
No estoy de acuerdo.

En general saldrán ordenados, pero no hay ningún mecanismo que te asegure
que SIEMPRE saldrán en el orden de la clave primaria. Depende fuertemente


de
la cantidad de inserciones y borrados.





Respuesta Responder a este mensaje
#19 MAXI
31/12/2004 - 17:48 | Informe spam
Ahora me gusta mas :-)




Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)

Msn Messenger:

"Salvador Ramos" escribió en el
mensaje news:%
Además de lo que indica Eladio, otro factor que puede ocasionar el que no
se devuelvan los registros ordenados es tener más de un procesador, y que
ambos estén ejecutando la consulta en paralelo.

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

"Eladio Rincón" escribió en el mensaje
news:
Hola,
el problema del que se está hablando es de la recuperación de registros
no
de inserción/actualización ...

creo que lo que intentas decir es que en algunos escenarios, la
ordenación
de los registros insertados puede ser que no sea físicamente
ascendente/descendente en función del índice agrupado...

la cosa es la siguiente: el hecho de que las filas estén ordenadas en
función del índice agrupado no significa que en cada página los datos de
la
fila estén ordenados, lo que si podemos asegurar es que los punteros que
están al final de la página, apuntan a la siguiente fila en la
ordenación; a
ver:

Voy a utilizar:
P para nombrar la zona donde están ubicados los punteros,
F para la zona de las filas; al principio de cada linea pongo la
dirección
física, por ejemplo 00-01, 00-02, etc;
para referenciar a una dirección física desde la zona de punteros lo voy
a
hacer con <00-01>;
[] para indicar el valor del índice agrupado y
{} para un valor varchar ... a ver como queda...

Dada la página 1 de una tabla:

F:
00-01 [1]{abc}
00-02 [2]{ab}
00-03 [5]{ddd}
00-04 [4]{eee}

P: <00-03><00-04><00-02><00-01>

fijaros que en P, el orden es inverso y es porque en realidad se lee en
orden inverso desde el final de la página, por otro lado, las filas no
están
físicamente ordenadas

Eladio Rincón
SQL Server MVP

Solid Quality Learning (http://www.solidqualitylearning.com)
"Comparte lo que sabes, aprende lo que no sepas", FGG

Consulte el histórico del grupo en Google
http://groups.google.com/groups?gro....sqlserver

¿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)?

"Asterion" wrote in message
news:
No estoy de acuerdo.

En general saldrán ordenados, pero no hay ningún mecanismo que te
asegure
que SIEMPRE saldrán en el orden de la clave primaria. Depende
fuertemente


de
la cantidad de inserciones y borrados.









Respuesta Responder a este mensaje
#20 Asterion
02/01/2005 - 19:29 | Informe spam
No es lo mismo demostrar que dar ejemplos.

Yo puedo dar 100 ejemplos que muestren que la consulta sale ordenada por el
índice definido, pero esto no **demuestra** que el orden **siempre** sea así.
Para esto hay que saber cómo implementa sql server los índices y si esto
asegura que siempre es así. En este caso no lo es.

En la bibliografía que te pasé podés encontrar abundantes ejemplos.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida