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

#1 MAXI
30/12/2004 - 01:00 | Informe spam
Jose, el orden sera del indice Cluster, veamos un ejemplo

==
use northwind
go

create table m_prueba (id int identity, nombre varchar(50), pais
varchar(100))
go

insert into m_prueba (nombre,pais) values ('Maxi','Arg')
insert into m_prueba (nombre,pais) values ('Aragon','USA')
insert into m_prueba (nombre,pais) values ('Carlos','España')
insert into m_prueba (nombre,pais) values ('Miguel','España')

/* aca vemos que el orden es como se han ingresado los registros */

select * from m_prueba

go

create clustered index m_index on m_prueba(nombre)

/* Aca vemos que ordeno por el indice Cluster */

select * from m_prueba


Suerte




Maxi

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

Msn Messenger:

"Jose" escribió en el mensaje
news:
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



Respuesta Responder a este mensaje
#2 qwalgrande
30/12/2004 - 09:35 | Informe spam
Hola.

Si no pones order by, nada te garantiza que los registros queden ordenados.
Es posible que salgan ordenados por el índice clustered, es decir, tal y como
están físicamente los registros, pero nada te lo asegura. En la práctica es
improbable que se te dé el caso de que lances la misma consulta varias veces
y cada vez la ordene de forma diferente, pero si quieres asegurarte de que
los registros salen ordenados, es decir, si el orden tiene una importancia en
el negocio que quieras solventar con la consulta, usa "ORDER BY".

qwalgrande

"Jose" wrote:

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




Respuesta Responder a este mensaje
#3 Salvador Ramos
30/12/2004 - 10:57 | Informe spam
Maxi una pequeña puntualización :-)
En la mayoría de los casos saldrán por el indice cluster, es más puedes
hacer un montón de pruebas y que en todas ellas lo utilice. Pero nada te
garantiza total y absolutamente que siempre, y sin excepción, te salgan por
ese orden, si lo quieres garantizar debes añadir el ORDER BY.

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

"MAXI" escribió en el mensaje
news:
Jose, el orden sera del indice Cluster, veamos un ejemplo

==>
use northwind
go

create table m_prueba (id int identity, nombre varchar(50), pais
varchar(100))
go

insert into m_prueba (nombre,pais) values ('Maxi','Arg')
insert into m_prueba (nombre,pais) values ('Aragon','USA')
insert into m_prueba (nombre,pais) values ('Carlos','España')
insert into m_prueba (nombre,pais) values ('Miguel','España')

/* aca vemos que el orden es como se han ingresado los registros */

select * from m_prueba

go

create clustered index m_index on m_prueba(nombre)

/* Aca vemos que ordeno por el indice Cluster */

select * from m_prueba

>
Suerte




Maxi

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

Msn Messenger:

"Jose" escribió en el mensaje
news:
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







Respuesta Responder a este mensaje
#4 Eladio Rincón
30/12/2004 - 11:37 | Informe spam
Hola qwalgrande :-)

estoy de acuerdo con tu comentario; sólo quería decir que en alguna ocasión
me he visto con problemas de rendimiento a la hora de ordenar los registros
y he decidido recuperar la consulta sin ORDER BY, y realizar la ordenación
en el cliente: Dataset-->DataView; conseguía descargar al servidor de la
ordenación y le hacía trabajar un poco a la memoria del cliente.

Es un caso puntual aplicable en un caso que no tenía indexada la columna de
la ordenación; tan sólo quería saber si alguien ha recurrido a esto en
alguna ocasión


Eladio Rincón
SQL Server MVP
http://www.siquelnet.com

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

"qwalgrande" <qwalgrande*nospam*@yahoo.es> wrote in message
news:
Hola.

Si no pones order by, nada te garantiza que los registros queden


ordenados.
Es posible que salgan ordenados por el índice clustered, es decir, tal y


como
están físicamente los registros, pero nada te lo asegura. En la práctica


es
improbable que se te dé el caso de que lances la misma consulta varias


veces
y cada vez la ordene de forma diferente, pero si quieres asegurarte de que
los registros salen ordenados, es decir, si el orden tiene una importancia


en
el negocio que quieras solventar con la consulta, usa "ORDER BY".

qwalgrande

"Jose" wrote:

> 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
>
>
>
>
Respuesta Responder a este mensaje
#5 Maxi
30/12/2004 - 13:13 | Informe spam
Hola, a mi me paso lo mismo justamente ayer con la optimizacion de una Query
:( tuve que mandarlo sin el order by y ordenar en el cliente ya que la
operacion Order By me consumia mucho :(


Salu2
Maxi


"Eladio Rincón" escribió en el mensaje
news:
Hola qwalgrande :-)

estoy de acuerdo con tu comentario; sólo quería decir que en alguna
ocasión
me he visto con problemas de rendimiento a la hora de ordenar los
registros
y he decidido recuperar la consulta sin ORDER BY, y realizar la ordenación
en el cliente: Dataset-->DataView; conseguía descargar al servidor de la
ordenación y le hacía trabajar un poco a la memoria del cliente.

Es un caso puntual aplicable en un caso que no tenía indexada la columna
de
la ordenación; tan sólo quería saber si alguien ha recurrido a esto en
alguna ocasión


Eladio Rincón
SQL Server MVP
http://www.siquelnet.com

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

"qwalgrande" <qwalgrande*nospam*@yahoo.es> wrote in message
news:
Hola.

Si no pones order by, nada te garantiza que los registros queden


ordenados.
Es posible que salgan ordenados por el índice clustered, es decir, tal y


como
están físicamente los registros, pero nada te lo asegura. En la práctica


es
improbable que se te dé el caso de que lances la misma consulta varias


veces
y cada vez la ordene de forma diferente, pero si quieres asegurarte de
que
los registros salen ordenados, es decir, si el orden tiene una
importancia


en
el negocio que quieras solventar con la consulta, usa "ORDER BY".

qwalgrande

"Jose" wrote:

> 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
>
>
>
>




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