[Postgresql] Standaard sorteren

Pagina: 1
Acties:

  • thijsc
  • Registratie: Augustus 2000
  • Laatst online: 22-12-2023
Als ik een postgresql een simpele select query uitvoer krijg ik een uitvoer die niet gesorteerd wordt. Er lijkt geen duidelijk systeem in de volgorde van de records te zitten.

Nu kan ik natuurlijk overal wel order by id oid achter gaan zetten. Maar dat is ook niet echt makkelijk.

Iemand enig idee waarom Postgresql niet gewoon standaard op de primaire key sorteert?

Verwijderd

Sorteert hij niet gewoon op volgorde van aanmaken?

  • thijsc
  • Registratie: Augustus 2000
  • Laatst online: 22-12-2023
Tot op zekere hoogte wel.

Maar als er een update op een record uitgevoerd wordt schijnt dit toch reden te zijn om deze onderaan te plaatsen. Het id blijft gelijk.

  • whoami
  • Registratie: December 2000
  • Laatst online: 11-09 22:04
Hij sorteert dus op de timestamp waarop het record aangemaakt/laatst gewijzigd is?

https://fgheysels.github.io/


  • thijsc
  • Registratie: Augustus 2000
  • Laatst online: 22-12-2023
Ik heb het even gecheckt.

En dat is inderdaad zo.

  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 11-09 20:55

Skinny

DIRECT!

SQL/Relationele database (de meest gangbare dus) geven toch altijd ongesorteerde output standaard. Tenminste, je mag niet van een ordering uitgaan. Wil je een specifieke volgorde, dan dien je een ORDER BY te doen.

Meestal wordt er gesorteerd op een auto-id, timestamp oid, maar daar mag je niet van uit gaan.

Bron: Mijn verre school verleden. ;)

SIZE does matter.
"You're go at throttle up!"


Verwijderd

bij postgresql moet je in principe altijd een order by doen, omdat idd zoals skinny al zei, de hele boel 'standaard' gesorteerd staat op auto-id/timestamp

  • jochemd
  • Registratie: November 2000
  • Laatst online: 31-08 19:19
Op woensdag 20 maart 2002 20:35 schreef whoami het volgende:
Hij sorteert dus op de timestamp waarop het record aangemaakt/laatst gewijzigd is?
Nee. Hij sorteert niet. De reden dat ze in die volgorde er uit rollen is dat ze in die volgorde op de harde schijf staan. Het magische woord voor Google en de PostgreSQL documentatie is Multi Version Concurrency Control (MVCC).

  • thijsc
  • Registratie: Augustus 2000
  • Laatst online: 22-12-2023
Nou goed. Dan maar standaard overal een ORDER BY achter zetten.

Op zich geen probleem, maar in alle andere dbmsen waarmee ik heb gewerkt gaat dit anders.

  • jochemd
  • Registratie: November 2000
  • Laatst online: 31-08 19:19
Zeker nooit met Oracle gewerkt?

  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 11-09 20:55

Skinny

DIRECT!

Op woensdag 20 maart 2002 23:15 schreef jochemd het volgende:
Zeker nooit met Oracle gewerkt?
Of met Postgres ;)

SIZE does matter.
"You're go at throttle up!"


  • thijsc
  • Registratie: Augustus 2000
  • Laatst online: 22-12-2023
Nee nooit met Oracle en Postgres gewerkt.

Op zich maakt het voor hetgeen waar ik nu mee bezig ben ook niets uit, het is namelijk een J2EE applicatie. Toevallig heb ik deze keer voor Postgres gekozen. Maar verder is dat niet relevant.

  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 11-09 20:55

Skinny

DIRECT!

Niet echt nee, maar als je bijvoorbeeld hier kijkt, dan lees je dat SQL databases (relationele- ) nooit een ordering.

Een aantal databases (ik noem een Access) proberen wat gebruikersvriendelijker te zijn door de output "logisch" te ORDER-en als je het zelf niet doet. Puur technisch gezien is het dus fout om van een volgorde die een database geeft uit te gaan. Zoals hierboven al gezegd lees de database de records (meestal) in de volgorde zoals ze op de HDD staan, en ja.. dan weet je het maar nooit. ;)

SIZE does matter.
"You're go at throttle up!"


  • jochemd
  • Registratie: November 2000
  • Laatst online: 31-08 19:19
Let er ook even op dat als je wil sorteren op een text/varchar/char veld het waarschijnlijk wel handig is om te sorteren op Upper(kolom). Sorteren is namelijk case-sensitive.
Pagina: 1