Bestimmte Variablen aus db holen was ist weniger "Ressourcenfressend"

spikaner

Quereinsteiger @ php
ich habe ein Array erstellt aus einen XML file das ungefähr so aussieht
Code:
Array
(
    [0] => Array
        (
            [aussteller] => angenommener Vertrag
            [status] => Completed
            [station] => 60008470
            [preis] => 0.00
            [giltbis] => 2011-09-29 16:03:03
            [akzeptdatum] => 2011-09-28 16:03:16
        )

    [1] => Array
        (
            [aussteller] => angenommener Vertrag
            [status] => Completed
            [station] => 60008470
            [preis] => 0.00
            [giltbis] => 2011-09-29 15:58:48
            [akzeptdatum] => 2011-09-28 15:58:57
        )

    [2] => Array
        (
            [aussteller] => angenommener Vertrag
            [status] => Completed
            [station] => 60005089
            [preis] => 0.00
            [giltbis] => 2011-09-28 08:06:47
            [akzeptdatum] => 2011-09-27 08:07:02
        )
....
Nun möchte ich aus einer Datenbank die variable [station] => 60005089 z.B. suchen und den korekten Namen und ort ausgeben lassen

kann ich das irgendwie preformanter gestallten als in der For jedesmal ein
PHP:
$sql = "SELECT stationsname, ort FROM stationlist WHERE id like '".$handel[$b]["station"]."'";
$result = mysql_query ($sql);
while($row = mysql_fetch_array($result))
{
	$station = $row['stationsname'];
	$ort = $row['ort'];
}
ausführen zu müssen, oder ist die Belastung so minimal das ich das ignorieren kann.?
Die liste kann ziemlich lang werden bis zu 200 Abfragen in einer Tabelle mit ca. 100000 einträgen.

mfg Spikaner
 
Bin mir über deinen Kenntnisstand nicht im klaren.

Das LIKE scheint mir merkwürdig. Wenn $handel[$b] eine ID (Zahl) ist, wäre wohl "WHERE id = $handel[$b]" richtig.

Dementsprechen ginge bei zusammenhängenden Zahlen dann auch "WHERE id > $x and id <$y".

Und ebenso würde auch gehen "WHERE id IN (60008470,60005089,4711)"
 
Mit dem Wort 'LIKE' werden in der Regel Strings, also Zeichenketten, verglichen.
Für zahlen benuzt man den Vergleichsoperator '=' ohne '', sicherlich geht auch LIKE aber = ist bei Zahlen schneller.

...Und ebenso würde auch gehen "WHERE id IN (60008470,60005089,4711)"...

Es würde nicht nur gehen, es währe auch in seinem Fall performanter da er nur eine Abfrage ausführt und nicht hunderte. ^^
 
Wie gesagt, ich bin mir nicht genau über sein Problem im Klaren. Vielleicht kann spikaner unseren Horizont nochmal mit einigen Fakten erweitern, was er eigentlich vorhat. Dann kann man auch besser helfen.

IN() natürlich die richtige Vorgehensweise, wenn es sich um irgendwelchen Zahlen ohne System handelt. Vielleicht will er aber auch so ne Blätterfunktion einbauen, die immer 200 Datensätze zeigt.
 
Außerdem bieten sich bei deinem Use-Case Prepared Statements gerade zu an. SQL wird einmal an die DB geschickt und dann kompiliert (auch nur einmal). Alle weiteren Fetches werden parametrisiert abgewickelt. Das spart ne Menge Traffic.
 
Zurück