viele select abfragen zusammenfassen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • viele select abfragen zusammenfassen

    Ich habe eine Tabelle mit Keywords. Nun habe ich eine Liste von Wörtern, die in meiner Suchmaschine "Indexiert" werden sollen.
    Dazu benötige ich die "Keywordid" des Keywords in der Keyword-Tabelle. Dies mache ich nun mit vielen Select-Abfragen. Irgendwie ist es doch
    bestimmt möglich alle diese Select-Abfragen in eine Abfrage zusammenzufassen. Das Problem ist nur, wenn ein Keyword nicht in der
    Keywordtabelle enthalten ist, muss es erst per Insert reingeschrieben werden, um dann anschliesend eine Select abfrage zu machen um die
    keywordid heraus zu bekommen.
    Weiss leider nicht wie ich die Abfragen zusammenfassen soll, da es schon
    mal 500.000 Abfragen bei einem Durchgang werden können.
    Hier mal der Code:

    PHP-Code:
    <?php
    $ANZGES 
    count($arr_words);
    for (
    $i 0$i $ANZGES$i++) {
            
    $sqlString "SELECT id from $table_keywords where keyword='".$arr_words[$i]."' limit 1";
            
    $Ergebnis mysql_db_query($Quelle_update$sqlString$Server_update);
            if (!
    $Ergebnis) {
                    echo 
    "<br>Datenbankfehler: $sqlString";
            }
            else {
                    
    $anzahl mysql_num_rows($Ergebnis);
                    if (
    $anzahl) {
                            
    $keywordid[] = mysql_result($Ergebnis0'id');
                    }
            }
            
            
    //keyword noch nicht in der keywordtabelle eingetragen
            
    if(!isset($keywordid)) {
                    
    $sqlString "INSERT INTO $table_keywords (keyword)
                    VALUES ('"
    .$arr_words[$i]."') ";
                    
    $Ergebnis mysql_db_query($Quelle_update$sqlString$Server_update);
                    if (!
    $Ergebnis) {
                            echo 
    "<br>Datenbankfehler: $sqlString";
                    }
                    else {
                            echo 
    $arr_words[$i]." eingetragen<br>";
                    }
                    
                    
    $sqlString "SELECT id from $table_keywords where keyword='".$arr_words[$i]."' limit 1";
                    
    $Ergebnis mysql_db_query($Quelle_update$sqlString$Server_update);
                    if (!
    $Ergebnis) {
                            echo 
    "<br>Datenbankfehler: $sqlString";
                            
    //return "Datenbankfehler: $sqlString";
                    
    }
                    else {    
    // Daten auslesen
                            
    $anzahl mysql_num_rows($Ergebnis);
                            if (
    $anzahl) {
                                    
    $keywordid[] = mysql_result($Ergebnis0'id');
                            }
                    }
            }
    }
    ?>

  • #2
    500.000 Queries??? Du bist noch jung, oder? Anderenfalls lass dir was anderes einfallen, denn du wirst nicht lang genug leben, bis die alle durch sind!

    Schau dir mal http://dev.mysql.com/doc/refman/5.0/...rt-select.html an!

    Kommentar


    • #3
      Original geschrieben von onemorenerd
      500.000 Queries??? Du bist noch jung, oder? Anderenfalls lass dir was anderes einfallen, denn du wirst nicht lang genug leben, bis die alle durch sind!
      carpe noctem

      [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
      [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

      Kommentar


      • #4
        also ich weiss nicht wie lange du lebst, aber in 30 minuten ist das durch. ich würde das gerne jedoch lieber in 10min durch bringen, da ich dann pro tag 3 mal mehr daten verarbeiten kann und somit nur 1/3 der server brauche.

        Kommentar


        • #5
          OffTopic:
          "... der Server" - Mit einem Cluster kann man seiner Lebenserwartung natürlich auch ein Schnippchen schlagen.

          Kommentar


          • #6
            nö bisher noch kein cluster sondern nur ein einzelner server. ist aber momentan auch in der testphase alles. hab jedoch durch eine kleine umstrukturierung das problem andersweitig gelöst.

            Kommentar

            Lädt...
            X