Mysql Speed - Seite 3

Seite 3 von 3 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/mysql_speed_68187/page_3 - zur Vollversion wechseln!


atrox schrieb am 27.02.2003 um 18:47

where id > $x order by ... limit 50;


Maehmann schrieb am 27.02.2003 um 19:02

nope geht eben nicht ...

sag ma ich hab auf der page 20 Filme dann soll er nur die 20 sortieren, die der user gerade sieht ... wenn ichs wie mit "where id > $x order by ... limit 50;" mach, dann sortiert er mir wieder alle ab dem ersten Film der aktuellen Seite bis zum Schluss.


atrox schrieb am 27.02.2003 um 19:08

was macht das überhaupt für einen sinn, nur einen teil der filme zu sortieren, entweder man zeigt doch nach dem schlüssel (zb id) an, oder nach einem suchkriterium. so ein "lokales" sortieren auf seiten zum blättern (ich nehme an, es soll sowas werden) ist total unüblich.

wie auch immer, als workaround kannst du dir ja in einem ersten query nur die höchste id (nennen wir sie $ende) mit id > $x und limit besorgen und dann mit id between $x and $ende order by ... anzeigen lassen.

// edit: womöglich lassen sich auch user-variablen zum abzählen verwenden, ganz ähnlich wie in diesem beispiel: http://www.faqts.com/knowledge_base...id/1238/fid/104


Maehmann schrieb am 27.02.2003 um 19:13

Zitat von atrox
so ein "lokales" sortieren auf seiten zum blättern (ich nehme an, es soll sowas werden) ist total unüblich.
Jop. Genauso was solls werden ;)

Zitat
wie auch immer, als workaround kannst du dir ja in einem ersten query nur die höchste id (nennen wir sie $ende) mit id > $x und limit besorgen und dann mit id between $x and $ende order by ... anzeigen lassen. [/B]

Klingt gut ;)
Werd ich nach dem Essen einbauen :D

THX :)


atrox schrieb am 27.02.2003 um 19:21

tortzdem sehe ich nicht die sinnhaftigkeit.. wenn ein user nach namen sortiert, und er hat als obersten eintrag auf der seite "Boogie Nights" und als letzten Eintrag "Star Trek", dann wird er wohl erwarten daß beim vorblättern filme mit dem namen < "Boogie Nights" zu finden sind (also A.. und B...) und analog beim weiterblättern filme > "start Trek" also mit anfangsbuchstaben "s.. t.. u.." usw zu finden sind. oder nicht ?


Maehmann schrieb am 27.02.2003 um 20:00

Jop ... genauso is es auch ;)
nur kann soll er die Filme die er gerade sieht auch nach anderen Kriterien sortieren können ... wenn er also auf der Seite 1-50 sieht, dann kann er dort auch nach Genre oder Sprache sortieren ... wenn er auf weiter klickt, dann sieht er die Filme 51-100 (zu Beginn nach dem Titel sortiert) ... :)

damn ... die funktion MAX() von mysql ignoriert Limit :(


atrox schrieb am 27.02.2003 um 20:40

na, mit max() wirds nicht hinhauen, weil limit "hinterher" angewandt wird. versuchs mit den user-variablen oder ganz unnschön mit "händisch" durchzählen :(


Maehmann schrieb am 27.02.2003 um 21:59

naja ... es gibt bei php auch eine funktion max() die liefert angeblich das größte element des arrays ... vielleicht mach ich was falsch, aber ich bekomm immer 1 als ergebnis :(

So jetzt hab ichs "per hand" durchgezählt ...
wahahhaahahaha ... :bash:

das hilft auch nur bedingt ;)
da er die filme jetzt auf den einzelnen Seiten nicht mehr nach titel sondern nach id sortiert :bash:

*argl*

heißt soviel wie ... auslesen des titels vom ersten und letzten Film auf der Seite und dann BETWEEN den beiden auslesen ... argl ...


Wie zum Geier les ich nur den 50 Datensatz aus, sortiert nach Fimtitel?
Ich glaub ich bin zu blöd für komplexere Mysqlgschichtln :p
Kanns ja ned sein, dass man sowas ned auf einmal aulesen kann :(


Maehmann schrieb am 28.02.2003 um 19:13

So ... drauf geschissen ;)
Die Leute müssen jetzt bevor die Filme ausgegeben werden, auswählen wonach sortiert wird und fertig =)


watchout schrieb am 28.02.2003 um 22:44

Zitat von Maehmann
So ... drauf geschissen ;)
Die Leute müssen jetzt bevor die Filme ausgegeben werden, auswählen wonach sortiert wird und fertig =)
ich versteh dein problem net, in dem moment wo ich eine seite anzeige habe ich ja schon die id's - ich kann ja nicht was anzeigen wenn ich nicht weiss was ich anzeige... :confused:


Maehmann schrieb am 01.03.2003 um 11:27

Da hast du wohl recht ;)

Es geht auch um die Sortierung vor der Ausgabe ... Ich hab leider keine brauchbare Funktion gefunden mit der ich das Array im nachhinein sortieren könnte. Und das sortieren mit MYSQL ist eben etwas kompliziert. Siehe oben ;)


Snoop schrieb am 01.03.2003 um 13:56

Ich muss ehrlich sagen ich versteh dein Problem nicht ??? du machst einfach in der tabelle ein paar links mit file.php?sort=title&order=1 ... file.php?sort=laenge&order=2....... etc
dann machst einfach
[PHP]
IF ($_GET[sort] == "laenge") {
$sort = "laenge";
}elseif($_GET[sort] == "title") {
$sort = "title";
}elseif......
}else{
$sort = "title";
};

IF ($_GET[order] == "1") {
$order = "ASC";
}elseif{$_GET[order] == "2") {
$order = "DESC";
}else{
$order = "ASC";
};

SELECT blbalbalab FROM $table WHERE blabalbala ORDER BY $sort $order";


und die geschichte hat sich ! :P


Maehmann schrieb am 01.03.2003 um 14:10

jaja ... :p
das geht aber nur, wenn alles auf einer seite angezeigt wird.

wenn ich auf einer seite nur 50 einträge anzeigen lasse und dann nur diese 50 Einträge sortieren möchte, dann geht das mit MYSQL ned wirklich einfach :p

eine möglichkeit wäre, dass array mit php zu sortieren ... dazu hab ich aber keine brauchbare Funktion gefunden :(


atrox schrieb am 01.03.2003 um 14:21

damit kannst du multi-dimensionale arrays sortieren (siehe beispiel 2)
http://www.php.net/manual/en/function.usort.php


Maehmann schrieb am 01.03.2003 um 14:34

hmmm ... thx für den Link ... das hab ich mir eh schon mal kurz angeschaut.
Hab mittlerweile aber auf dieses Feature verzichtet ;)
Prog mal den Rest ... am Schluss werd ich mir dieses Feature nochmal durch den Kopf gehen lassen :)




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025