Standard SQL

From: "Guido Barosio" <gbarosio(at)gmail(dot)com>
To: PostgreEs <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Standard SQL
Date: 2007-09-19 03:38:53
Message-ID: f7f6b4c70709182038l24369f35od4539036124f0e32@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Techie doubt nocturna:

Existe una tabla dentro de un modelo de datos relacional. La tabla
esta definida con una sola columna, de tipo serial (o integer afectada
por una sequencia por default).

Inserto entonces, registros en la tabla, forzando el insert a
evitar la secuencialidad indicando el entero que deseo insertar.
Altero entonces la secuencialidad esperada.

Consulto luego con un "select * from tabla".

El resultado en mysql es ordenado por la columna en cuestion por
default. En cambio PostgreSQL no ejecuta un ordenamiento y respeta el
"orden" en que fueron insertados los registros.

Mi pregunta es: cual es el comportamiento esperado? (NO pregunto
por el deseado, dado que eso lo resuelvo ordenanto los datos
explicitamente en mi SQL)

sql (salvando las distancias entre un motor y otro, a modo de ejemplo):

create table test (a serial);
begin;
insert into test (a) values (2);
insert into test (a) values (1);
commit;

MySQL retorna: 1,2
PostgreSQL retorna: 2,1

Mis conclusiones por ahora:

1) Por lo que pude entender en el explain de MySQL, el select
utiliza un index scan, y estimaria que este indice retorna los datos
ordenados.

2) PostgreSQL dice levantar los datos de un modo secuencial
(esperable), explicando el motivo.

Funny, estoy tratando de acercar dos comunidades aguerridas con una
consulta bastante insulsa, pero que despierta mi curiosidad porque
comprendo que lo que MySQL esta haciendo es fraguar mi intencion de
consultar datos sin esperar ordenamiento en ellos.

Si alguien tiene otro motor (SQL Server u Oracle seria optimo) y puede
realizar esta prueba agradeceria comparta los resultados.

Saludos afectuosos a todos los de siempre!
--
Guido Barosio
-----------------------
http://www.globant.com
guido(dot)barosio(at)globant(dot)com

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2007-09-19 03:48:30 Re: No me puedo conectar fuera de la consola
Previous Message Jaime Casanova 2007-09-19 03:36:49 Nuevas versiones menores: 8.2.5, 8.1.10, 8.0.14, 7.4.18, 7.3.20