tabelle sortieren und danach speichern

Alles, was MariaDB und MySQL betrifft, kann hier besprochen werden.

tabelle sortieren und danach speichern

Postby vimes » 19. November 2008 09:23

hallo forum,

wenn mich nicht alles täuscht, gibt es doch eine interne sortierung bei den tabellen ?!
ich möchte nämlich eine tabelle nach einer spalte sortieren und dann in diesem sortierten zustand abspeichern, damit beim nächsten einfachen "select" aufruf (ohne order by) gleich diese sortierung angezeigt wird.
wie kann man das bewerkstelligen ?
danke für die hilfe.
vimes
 
Posts: 8
Joined: 25. October 2006 11:20

Postby Wiedmann » 19. November 2008 09:36

wenn mich nicht alles täuscht, gibt es doch eine interne sortierung bei den tabellen ?!

Eigentlich nicht wirklich.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby vimes » 19. November 2008 09:42

wovon ist dann abhängig, in welcher reihenfolge die zeilen bei einer ausgabe angezeigt werden ? vom pk ?
vimes
 
Posts: 8
Joined: 25. October 2006 11:20

Postby Wiedmann » 19. November 2008 09:50

wovon ist dann abhängig, in welcher reihenfolge die zeilen bei einer ausgabe angezeigt werden ?

Von der Spalte die im ORDER BY angegeben ist. Ohne ORDER BY kann man dazu keine Aussage treffen.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby vimes » 19. November 2008 10:29

so, und jetzt machen wir mal ein gedankenspiel.

wir setzen "select * from irgendeinetabelle" und bekommen wenn es gut geht, eine ergebnisliste ausgegeben.
nach irgendeiner vorschrift muss doch mysql die ausgabe steuern ?
oder wird das jedesmal von der software ausgewürfelt ?
vimes
 
Posts: 8
Joined: 25. October 2006 11:20

Postby Nobbie » 19. November 2008 12:44

Wiedmann wrote:
wenn mich nicht alles täuscht, gibt es doch eine interne sortierung bei den tabellen ?!

Eigentlich nicht wirklich.


Doch, gibt es wirklich. Das ist die Default-Sortierung, wenn ansonsten keine ORDER Klausel angegeben wird.

Man erreicht diese Sortierung (die normalerweise nach dem Primärkey geschieht - aber man kann es ändern), indem man via ALTER die Tabelle ändert:

Code: Select all
ALTER TABLE tabellenname ORDER BY feldname


Bei der ORDER-Klausel können natürlich alle Angaben wie in einem SELECT gemacht werden (mehrere Felder, ASC oder DESC usw.).

Anschließend ist jede SELECT ... FROM tabellenname nach dieser Sortierung sortiert. Das ist durchaus sinnvoll, wenn man die Performance optimieren will, weil man beispielsweise sowieso immer nach dem Nachnamen o.ä. sortieren würde (was im SELECT geschieht).

Wichtig: wenn im SELECT auch ORDER BY angegeben wird, aber es ist die gleiche Reihenfolge wie bereits im ALTER, so "bemerkt" MySQL dies und wird nicht unnötig eine neue Sortierung durchführen. Deswegen empfehle ich grundsätzlich auch bei SELECT eine ORDER BY Klausel anzugeben, wenn es auf eine bestimmte Sortierung ankommt. Es kostet keine Performance, ist aber portabler und insbesondere transparenter programmiert, vor allem aber besser wartbar (einfacher nachzuvollziehen).
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Postby vimes » 19. November 2008 13:05

wo ist der huldigungssmiley, wenn man den braucht ?

*aufdiekniefall*

genau DAS habe ich gesucht. vielen dank 8)
vimes
 
Posts: 8
Joined: 25. October 2006 11:20

Postby Nobbie » 19. November 2008 14:02

vimes wrote:wo ist der huldigungssmiley, wenn man den braucht ?


Ich könnte ersatzweise meine Bankverbindung anbieten...
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Postby vimes » 19. November 2008 16:12

Nobbie wrote:
vimes wrote:wo ist der huldigungssmiley, wenn man den braucht ?


Ich könnte ersatzweise meine Bankverbindung anbieten...


wie soll ich denn einen smiley überweisen ? :wink:
vimes
 
Posts: 8
Joined: 25. October 2006 11:20


Return to MariaDB - MySQL

Who is online

Users browsing this forum: No registered users and 17 guests