Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Datenbank Abfrage Geschwidikeit optimieren

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von dekan, 22 September 2016.

  1. dekan

    dekan Benutzer

    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");
    }
    
     
  2. ukulele

    ukulele Datenbank-Guru

    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
     
  3. akretschmer

    akretschmer Datenbank-Guru

    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.
     
  4. Eismann

    Eismann Benutzer

    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
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden