Mailinglisten-Archive |
Hi, Frank Oellien: > Das ist mir nicht ganz klar. Ich habe allerings mal einen Auszug meiner > Tabelle als Attachment beigefügt. > Der Ausschnitt betrachtet die ersten 2000 Reihen von insgesammt 1.8 Millionen. > Ach so. Ich nenn die Tabelle jetzt mal TT und die Spalten ID val > 89 [ irgendwelche Daten ] -0.210 Du willst also alle IDs, für die es eine Zeile mit val=X und eine mit val=Y und eine mit val=Z etc.pp. gibt. Also sagst du: select distinct ID from TT,TT as A, TT as B, TT as C where TT.ID = A.ID and TT.ID = B.id and TT.id = C.id and TT.val = 100 and A.val = 200 and B.val = 300 and C.val = 400; Mach Indices auf val und ID, falls du noch keine hast -- aber das sollte eh klar sein. Ich habe dafür mal eine Testtabelle angelegt: 2 Millionen Records, Spalte VAL geht von 1 bis 100000 und Spalte ID von 0 bis 19. Der obige Ausdruck findet, so es auf 'val' einen Index gibt, die zwanzig verschiedenen IDs in ... ahem ... einer zwanzigstel Sekunde. Auf einem P3/450. Dazu brauchst du zwar 37 MBytes freien Speicher (um den Index zu cachen), aber das ist es offensichtlich wert. Ich hab das mit Integers ausprobiert. Wenn du was anderes für deine Spalte verwendest, empfiehlt es sich fast schon, einen 3-Byte-Integer für die Spalte zu verwenden und den Wertebereich entsprechend zu skalieren. -- Matthias Urlichs | noris network GmbH | smurf_(at)_noris.de | ICQ: 20193661 The quote was selected randomly. Really. | http://www.noris.de/~smurf/ -- It will be advantageous to cross the great stream...the Dragon is on the wing in the Sky...the Great Man rouses himself to his Work. --- *** Abmelden von dieser Mailingliste funktioniert per E-Mail *** an mysql-de-request_(at)_lists.4t2.com mit Betreff/Subject: unsubscribe
php::bar PHP Wiki - Listenarchive