phpbar.de logo

Mailinglisten-Archive

[dbs] Wie finde ich die passenden Datensätze am schnellsten?

[dbs] Wie finde ich die passenden Datensätze am schnellsten?

Michael Hansen webmaster at web-prinz.de
Mon Okt 30 19:45:37 CET 2006


Hallo René,


René Thiel schrieb:
> 
> Hallo,
> 
> ich brauche aus 1.000.000 Datensätzen folgendes:
> 
> 1. Verbindungsaufbau (Call X)
> 2. Verbindungsdetails (Call X)
> 3. Verbindungsabbau (Call X)
> 
> Zwischen Verbindungsaufbau, Verbindungsdetails und
> Verbindungsabbau können weitere Verbindungen auf-
> und abgebaut werden:
> 
> aufbau(Call 1)
> details(Call 1)
> aufbau(Call 2)
> aufbau(Call 3)
> details(Call 3)
> details(Call 2)
> abbau(Call 3)
> abbau(Call 1)
> abbau(Call 2)
> 
> Ich brauche also eigentlich für ein "Free" das vorangegangene
> "Release" und zu dem wieder das vorangegangene "Alloc",
> WENN NICHT nach dem "Alloc" noch ein "Free" zu finden ist.
> 
> Ich habe das so versucht:
> 
> SELECT * FROM `Tabelle`
> WHERE `Typ` = 'Free'
> ORDER BY `ID`
> 
> SELECT * FROM `Tabelle`
> WHERE `Call` = '".$Free_row['Call']."'
> AND `Typ` = 'Release'
> AND `ID` < '".$Free_row['ID']."'
> ORDER BY `ID` DESC
> LIMIT 1
> 
> SELECT *
> FROM `Tabelle`
> WHERE `Call` = '".$Free_row['Call']."'
> AND `Typ` = 'Alloc'
> AND `ID` < '".$Release_row['ID']."'
> ORDER BY `ID` DESC
> LIMIT 1 "
> 
> Das Ganze gab mit Abbruch bei 500 gefundenen
> Verbindungen: 3,734 sec - eindeutig zu viel.
> 
> 
> Hat jemand einen Tip, ob und wie ich das schneller bekomme?


Ich habe die von dir angeregte Diskussion zum Auswerten von Logfiles
mitverfolgt und bin ganz ehrlich davon nicht sehr begeistert. Bitte verstehe
mich nicht falsch und nimm es nicht zu sehr persönlich, aber vielleicht
solltest du erst einmal kleinere Brötchen backen, wenn sich dein Wissen doch
so arg beschränkt...

Bei dem jetzigen Problem verstehe ich noch nicht warum du 3 verschiedene
Querys brauchst bzw. was du damit konkret bezwecken willst!? Es sieht für
mich ein wenig nach einem Versuch aus eine Transaktionsfähigkeit (siehe
http://de.wikipedia.org/wiki/Transaktion_%28Informatik%29 - etwas Besseres
hab ich so schnell zu der Thematik nicht gefunden) bereitzustellen, was aber
alleine bei SELECT-Abfragen gar keinen Sinn ergeben würde. (Es sei denn es
könnten zeitgleich Update-, Delete- oder Insert-Operationen auf den gleichen
Tabellen ablaufen.) So wie ich es aber jetzt verstanden habe, fügst du
einmal deine Logdaten in die Datenbank ein und arbeitest dann nur noch auf
diesen.  

Also entweder ging es doch an mir vorüber oder es fehlt allgemein noch ein
paar Informationen über den Zweck und am besten auch der Struktur der
Tabelle (Schlüssel, Indizes). 


Gruß,
Michael



php::bar PHP Wiki   -   Listenarchive