mysql 4.1.22-standard-log grosse Ergebnisse sortieren

mysql 4.1.22-standard-log grosse Ergebnisse sortieren

am 17.10.2007 22:13:06 von cami

Hallo,

ich habe ien problem mit der Sortierung grössere Datenmengen. Die
Sortierung z.B. nach einem Datumsfeld funktioniert bei 2oo
Ergebnisdatensätzen tadelos, wird im selben Skript ein Parameter
variiert so dass die Ergebnismenge auf 1000 steigt funktioniert die
selbe gleiche Sortierungsregel nicht mehr. WÖran kann das liegen? Wird
das Ergebnis ggfs. mal im RAM mal im tmp FIle "zwischengelagert" so
dass es nicht sortiert werden kann?
Besten Dank, Oliver

Re: mysql 4.1.22-standard-log grosse Ergebnisse sortieren

am 18.10.2007 08:06:48 von Sven Paulus

cami wrote:
> ich habe ien problem mit der Sortierung grössere Datenmengen. Die
> Sortierung z.B. nach einem Datumsfeld funktioniert bei 2oo
> Ergebnisdatensätzen tadelos, wird im selben Skript ein Parameter
> variiert so dass die Ergebnismenge auf 1000 steigt funktioniert die
> selbe gleiche Sortierungsregel nicht mehr.

Was heisst "funktioniert nicht mehr"? Kommt eine Fehlermeldung? Welche?

Re: mysql 4.1.22-standard-log grosse Ergebnisse sortieren

am 18.10.2007 09:48:47 von cami

On 18 Okt., 08:06, Sven Paulus wrote:
> cami wrote:
> > ich habe ien problem mit der Sortierung grössere Datenmengen. Die
> > Sortierung z.B. nach einem Datumsfeld funktioniert bei 2oo
> > Ergebnisdatensätzen tadelos, wird im selben Skript ein Parameter
> > variiert so dass die Ergebnismenge auf 1000 steigt funktioniert die
> > selbe gleiche Sortierungsregel nicht mehr.
>
> Was heisst "funktioniert nicht mehr"? Kommt eine Fehlermeldung? Welche?

nein es gibt keinen Fehler, das ergebniss ist einfach nicht sortiert

Re: mysql 4.1.22-standard-log grosse Ergebnisse sortieren

am 18.10.2007 10:17:25 von Andreas Kretschmer

Andreas
--
Andreas Kretschmer
Linux - weil ich es mir wert bin!
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
Deutsche PostgreSQL User Group: http://pgug.de

Re: mysql 4.1.22-standard-log grosse Ergebnisse sortieren

am 18.10.2007 10:24:14 von Axel Schwenke

cami wrote:
> On 18 Okt., 08:06, Sven Paulus wrote:
>> cami wrote:

>> > ich habe ien problem mit der Sortierung grössere Datenmengen. Die
>> > Sortierung z.B. nach einem Datumsfeld funktioniert bei 2oo
>> > Ergebnisdatensätzen tadelos, wird im selben Skript ein Parameter
>> > variiert so dass die Ergebnismenge auf 1000 steigt funktioniert die
>> > selbe gleiche Sortierungsregel nicht mehr.
>>
>> Was heisst "funktioniert nicht mehr"? Kommt eine Fehlermeldung? Welche?
>
> nein es gibt keinen Fehler, das ergebniss ist einfach nicht sortiert

Das glaube ich nicht. Zeig uns ein nachvollziehbares Beispiel.
Und leg dir einen Realnamen zu. Kein Name, keine Antwort.


XL

Re: mysql 4.1.22-standard-log grosse Ergebnisse sortieren

am 23.10.2007 15:13:09 von cami

On 18 Okt., 10:24, Axel Schwenke wrote:
> cami wrote:
> > On 18 Okt., 08:06, Sven Paulus wrote:
> >> cami wrote:
> >> > ich habe ien problem mit der Sortierung grössere Datenmengen. Die
> >> > Sortierung z.B. nach einem Datumsfeld funktioniert bei 2oo
> >> > Ergebnisdatensätzen tadelos, wird im selben Skript ein Parameter
> >> > variiert so dass die Ergebnismenge auf 1000 steigt funktioniert die
> >> > selbe gleiche Sortierungsregel nicht mehr.
>
> >> Was heisst "funktioniert nicht mehr"? Kommt eine Fehlermeldung? Welche?
>
> > nein es gibt keinen Fehler, das ergebniss ist einfach nicht sortiert
>
> Das glaube ich nicht. Zeig uns ein nachvollziehbares Beispiel.
> Und leg dir einen Realnamen zu. Kein Name, keine Antwort.
>
> XL

Ich heisse Oliver Schuppart und werden natürlich umgehend mein Profil
aktualisieren wenn es der Sache dient.
Das Explain differiert an einer Stelle bei den beiden Abfragen:
Die Funktionierende gibt aus: "Using where; Using temporary; Using
filesort"
während die Abfrage die nicht funktioniert auf das "Using filesort"
verzichtet. Hat das einen Grund?

DIe Abfragen sehen im einzelnen so aus:

Funktioniert:

EXPLAIN SELECT DISTINCT tabelleA . * , tabelleB.* FROM tabelleA,
tabelleB
WHERE (
(
(
(
tabelleA.agentur =3D 'OOIzR3dey5z98EvI'
)
AND tabelleA.bewerber_id =3D tabelleB.bewerber_id
AND tabelleA.bewerber_id !=3D ''
AND tabelleB.bewert =3D 'geei'
AND tabelleB.status !=3D ''
)
AND tabelleB.datum <=3D '2007-10-23'
)
)
AND (
tabelleB.aktiv =3D 'Y'
)
ORDER BY tabelleB.datum DESC
LIMIT 0 , 10

Funktioniert nicht:

EXPLAIN SELECT DISTINCT tabelleA . * , tabelleB . *
FROM tabelleA, tabelleB
WHERE (
(
(
(
(
tabelleA.agentur =3D 'OOIzR3dey5z98EvI'
)
AND tabelleA.bewerber_id =3D tabelleB.bewerber_id
AND tabelleA.bewerber_id !=3D ''
AND tabelleB.bewert =3D 'pruef'
AND tabelleB.status !=3D ''
)
AND tabelleB.datum <=3D '2007-10-23'
)
)
AND (
tabelleB.aktiv =3D 'Y'
)
)
ORDER BY 'tabelleB.datum' DESC
LIMIT 0 , 10


Auch die Nutzung von Joins bringt nichts. Habt Ihr eine Idee?

Re: mysql 4.1.22-standard-log grosse Ergebnisse sortieren

am 24.10.2007 00:45:11 von Axel Schwenke

cami wrote:
> On 18 Okt., 10:24, Axel Schwenke wrote:
>> cami wrote:
>>
>> >> Was heisst "funktioniert nicht mehr"? Kommt eine Fehlermeldung? Welche?
>>
>> > nein es gibt keinen Fehler, das ergebniss ist einfach nicht sortiert
>>
>> Das glaube ich nicht. Zeig uns ein nachvollziehbares Beispiel.
>> Und leg dir einen Realnamen zu. Kein Name, keine Antwort.

> Ich heisse Oliver Schuppart und werden natürlich umgehend mein Profil
> aktualisieren wenn es der Sache dient.

Fein. Jetzt muß du nur noch herausfinden, wie du deinen Namen in
deinem Newsreader (MSIE7?) einträgst, daß er in der From: Zeile
deiner Postings angezeigt wird.

> Das Explain differiert an einer Stelle bei den beiden Abfragen:
> Die Funktionierende gibt aus: "Using where; Using temporary; Using
> filesort"
> während die Abfrage die nicht funktioniert auf das "Using filesort"
> verzichtet. Hat das einen Grund?

Ja. Es sind verschiedene Abfragen. Ich formatiere die unten mal
*etwas* lesbarer (auch wenn das bei deinem Kauderwelsch nicht
einfach ist)

> Funktioniert:

EXPLAIN
SELECT DISTINCT tabelleA . * , tabelleB.*
FROM tabelleA,tabelleB
WHERE ((((tabelleA.agentur = 'OOIzR3dey5z98EvI')
AND tabelleA.bewerber_id = tabelleB.bewerber_id
AND tabelleA.bewerber_id != ''
AND tabelleB.bewert = 'geei'
AND tabelleB.status != ''
)
AND tabelleB.datum <= '2007-10-23'
)
)
AND (tabelleB.aktiv = 'Y')
ORDER BY tabelleB.datum DESC
LIMIT 0 , 10

>
> Funktioniert nicht:
>

EXPLAIN
SELECT DISTINCT tabelleA . * , tabelleB . *
FROM tabelleA, tabelleB
WHERE (((((tabelleA.agentur = 'OOIzR3dey5z98EvI')
AND tabelleA.bewerber_id = tabelleB.bewerber_id
AND tabelleA.bewerber_id != ''
AND tabelleB.bewert = 'pruef'
AND tabelleB.status != ''
)
AND tabelleB.datum <= '2007-10-23'
)
)
AND (tabelleB.aktiv = 'Y')
)
ORDER BY 'tabelleB.datum' DESC
LIMIT 0 , 10


Alle Klammern sind redundant. Außerdem sind die beiden Queries
verschieden geklammert. Das ist in *diesem* Fall egal, im
allgemeinen jedoch nicht.

Der Knackpunkt sind aber die Anführungszeichen um tabelleB.datum
im zweiten ORDER BY. Etwas salopp formuliert weist du MySQL an,
eine weitere Spalte zum Ergebnis hinzuzufügen, die für jede Zeile
den String 'tabelleB.datum' enthält und dann nach dieser Spalte
zu sortieren. Da das Sortieren nach einer Konstanten offensicht-
lich sinnlos ist, ignoriert MySQL das.


XL