Datenbank Abfrage Geschwidikeit optimieren

dekan

Benutzer
Beiträge
10
Gibt es eine Möglichickteit diese Datenbank Abfrage zu beschleunigen?

Ich habe eine CSV Datei mit Daten und für jeden Eintrag überprüfe ich in der Tabelle ob bereits vorhanden.

Der durchlauf dauert sehr lange und das möchte ich gerne beschleunigen:

Code:
while ($csv_line = fgetcsv($fp, 0, "   ")) {

  $gefunden = false;
  $result = mysqli_query($connection, "SELECT * FROM importing", MYSQLI_USE_RESULT);
  while ($rower = mysqli_fetch_assoc($result)) {

  if (($rower['KundEmail'] == $csv_line[12] && $rower['Abonummer'] == $csv_line[0]) || $csv_line[12] == "") {
  $gefunden = true;  
  }
     
  }
  if ($gefunden == false  ) {
  echo"Kundennummer: " . $csv_line[0] . " EMail: " . $csv_line[12] . "/n";

}
print_r("lauft");
}
 
Werbung:
Deine Datenbankabfrage lautet genau genommen
Code:
SELECT * FROM importing
Der Rest ist kein SQL.

Beschleunigen kannst du das in dem du,
- weniger Datensätze selektirst, es also mit einem WHERE einschränkst
- weniger Spalten selektierst in dem du nicht alle Spalten abfragst
- Daten löscht
- einen schnelleren Server kaufst
- eine schneller DB einsetzt
- die Verbindung zu deinem Server ausbaust
 
Ich habe eine CSV Datei mit Daten und für jeden Eintrag überprüfe ich in der Tabelle ob bereits vorhanden.

Datenbankoperationen in Schleifen ist das beste Konzept, um möglichst schnell in arge Performanceprobleme zu kommen. Je nachdem, was Du vorhast, wäre es das einfachste, die CSV in eine Tabelle zu laden und dann via SQL zu arbeiten, um zu ermitteln, was wo (nicht) vorhanden ist. Da böten sich dann ein JOIN an.

Bessere Datenbanken als MySQL könnten auch die CSV-Datei direkt als 'Tabelle' betrachten und einen SQL-Join auf diese machen, in PG nennt sich das FDW: Foreign Data Wrapper. Aber Du hast ja MySQL.
 
Werbung:
ich glaube auch, das Du gut daran tust, die csv-Tabelle zuerst in eine temp-Tabelle zu importieren. Dann nur innerhalb des Servers mit PHP und SQL weitermachen. Frage ist natürlich, wie lange dauert der Import. Um viele Datensätze geht es denn? und natürlich um wieviele Spalten?

Gruß Eismann
 
Zurück
Oben