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

#11 Asterion
30/12/2004 - 15:21 | Informe spam
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
#12 Maxi
30/12/2004 - 15:42 | Informe spam
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
#13 Asterion
30/12/2004 - 16:27 | Informe spam
No, en realidad la pregunta era si siempre se listaba en el orden, por lo
tanto vos deberías demostrarnos a nosotros que siempre es como decís(jejeje).

Un poco más en serio, se debe a las particularidades del tipo de árbol en
que se implementa el índice. Por eso que hablo de cantidad de inserciones y
borrados. Forma parte de cualquier curso universitario de algoritmos, no
tiene sentido extenderse más aquí.
Si querés leer más acerca de cómo implementa los índices sql server, te
recomiendo echarle un vistazo a "Professional SQL Server 2000 Programming
" de Robert Vieira, Ed Wrox, Cap. 9
Para información sobre los distintos tipos de árboles y algoritmos usados en
los índices de cualquier base de datos, una lectura casi obligada es
"Fundamentals of algorithmics" de Giles Brassard.
Respuesta Responder a este mensaje
#14 Maxi
30/12/2004 - 17:11 | Informe spam
Si ok, el tema lo conozco ;) lo que te queria decir es que las cosas me
gusta demostrarlas y que en la query que mostre se ve que se ordeno por el
Cluster cuando se lo genero, por lo cual (y por mas que tengas la razon)
seria bueno que demuestres en que caso esto no es cierto, porque hasta ahora
la unica prueba que hicimos (el query que pase) responde a la pregunta del
amigo, veamos en que momento esto no es asi :-)


Salu2
Maxi


"Asterion" escribió en el mensaje
news:

No, en realidad la pregunta era si siempre se listaba en el orden, por lo
tanto vos deberías demostrarnos a nosotros que siempre es como
decís(jejeje).

Un poco más en serio, se debe a las particularidades del tipo de árbol en
que se implementa el índice. Por eso que hablo de cantidad de inserciones
y
borrados. Forma parte de cualquier curso universitario de algoritmos, no
tiene sentido extenderse más aquí.
Si querés leer más acerca de cómo implementa los índices sql server, te
recomiendo echarle un vistazo a "Professional SQL Server 2000 Programming
" de Robert Vieira, Ed Wrox, Cap. 9
Para información sobre los distintos tipos de árboles y algoritmos usados
en
los índices de cualquier base de datos, una lectura casi obligada es
"Fundamentals of algorithmics" de Giles Brassard.

Respuesta Responder a este mensaje
#15 Eladio Rincón
30/12/2004 - 20:31 | Informe spam
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
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida