Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Problema con ids consecutivos

Estas en el tema de Problema con ids consecutivos en el foro de Mysql en Foros del Web. Hola amigos, tengo una duda, porque mysql no me muestra los ids en forma consecutiva es decir, si inserto 10 registros , me los tendria ...
  #1 (permalink)  
Antiguo 30/01/2012, 18:32
Avatar de duskrow  
Fecha de Ingreso: abril-2008
Mensajes: 267
Antigüedad: 16 años, 7 meses
Puntos: 8
Problema con ids consecutivos

Hola amigos, tengo una duda, porque mysql no me muestra los ids en forma consecutiva es decir, si inserto 10 registros , me los tendria que ordenar de la sig manera 1 2 3 4 5 6 7 8 9 10 , pero por alguna razon los veo asi 1 2 3 5 4 6 7 8 10 9 , se que con el order by id lo puedo corregir, pero no puedo usarlo en este caso por que son muchas consultas anidadas, pero solo quisiera saber el porque mysql hace eso

saludos
__________________
"El sabio no dice lo que piensa,pero piensa lo que dice"
Att Miguel Lomeli
Visita mi Blog
  #2 (permalink)  
Antiguo 31/01/2012, 02:43
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Problema con ids consecutivos

El orden de insercion de los registros en una base de datos relacional que se precie, es irelevante se prima antes economias de lectura, es decir el motor en funcion de como esten almacenados fisicamente los datos en el disco los lee lo mas rapido posible...

Si lees un poco de teoria sobre SQL lo primero que te explicaran es que es un leguaje declarativo, no indicativo, es decir tu declaras lo que quieres y el motor te lo sirve de la forma mas rápida posible. Luego si no declaras en que orden quieres los registros el motor los muestra de la forma mas rápida que puede...

Incluso se da que una misma consulta puede mostrar los datos en distinto orden si entre las ejecuciones ha habido cambios en el disco que hayan modificado el almacenaje de los datos.

La diferencia con los lenguajes no declarativos es que en ellos no solo indicas lo que quieres si no tambien como hacerlo. En SQL solo declaras lo que quieres y el motor decide como hacerlo segun su algoritmo de optimización. Luego si quieres un orden determinado debes decirselo al motor para que lo tenga en cuenta en el momento en que analiza como servirte los datos de forma optima.

Finamente, por muchas consultas anidadas que tengas el ORDER BY lo puedes aplicar al final sobre la lista de campos que vaya a mostrasr la "super"query.

SELECT ...lista de campos...
FROM
...todas las subqueris que quieras...
ORDER BY ...lista de campos;
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Etiquetas: consecutivos, ids, registros, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:11.