ORDER BY y clave primaria

28/12/2005 - 00:19 por Pedro Echavarria | Informe spam
Hola .

Dos preguntitas

1) Un query sin order by siempre me habia retornado registros en orden de la
clave primaria, sin embargo ayer vi que no me aparecio en ese orden sino en
un orden aleatorio. Puedo ponerle el order by ok pero no se supone que no
deberia ocurrir esto, es decir cuando no pongo el order by que me tome la
clave primaria como ordenamiento ?

2) En SQL Server se reconstruyen los indices ? Como se le hace ?



Pedro
 

Leer las respuestas

#1 Alejandro Mesa
28/12/2005 - 15:03 | Informe spam
Pedro,

SQL Server crea un indice clustered por defecto, sobre la clave primaria, si
no se le dice lo ontrario. Como sabes, la lectura de las paginas se hara en
base al indice clustered y por lo tanto el resultado aparecera ordenado por
las columnas que conforman la clave del indice clustered (en tu caso es la
clave primaria). Yo te recomiendo que no bases tu codigo en este
comportamiento, porque si se cambia la estrutura del indice clustered,
entonces parte de ese codigo fallara. Para garantizar que un resultado este
ordenado por x columnas, preferible que uses la clausula "order by".

Puedes usar el comando "dbcc dbreindex" para reindexar, pero tambien puedes
usar la sentencia "create index ... with drop_existing", la cual es de cierta
ayuda cuando la consistencia del indice no esta dañada y las columnas que
conforman la tabla no han sido cambiadas.


AMB

"Pedro Echavarria" wrote:

Hola .

Dos preguntitas

1) Un query sin order by siempre me habia retornado registros en orden de la
clave primaria, sin embargo ayer vi que no me aparecio en ese orden sino en
un orden aleatorio. Puedo ponerle el order by ok pero no se supone que no
deberia ocurrir esto, es decir cuando no pongo el order by que me tome la
clave primaria como ordenamiento ?

2) En SQL Server se reconstruyen los indices ? Como se le hace ?



Pedro




Preguntas similares