180000 Einträge Mysql Langsam

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

  • 180000 Einträge Mysql Langsam

    Hallo,

    Ich habe eine Tabelle in mysql, diese ist in laufe der Jahr
    gewachsen und hat zurzeit über 180000 Einträge,
    wenn ich mir dan den letzten Eintrag anzeigen lassen will
    braucht mysql bald 3 Minuten bis es zur Verfügung steht
    was kann ich außer eine Neue Tabelle anzulegen auf
    sql ebene noch machen?

    mfG
    Somba

  • #2
    Wie fragst du denn den Datensatz ab ? Gehst du in einer Schleife einfach alle durch und suchst nach deine Kriterien ?
    PHP-Code:
    $sql "SELECT * FROM tabelle ORDER BY id DESC LIMIT 1"
    Sollte nur den letzten Eintrag holen und sonst nichts.
    Wie gesagt ohne deine Query zu kennen ist es irgendwie wie im trüben zu Fischen Also etwas mehr Infos

    Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      PHP-Code:
      $erk       $datenbank->frage("select MAX(Erkennung) AS maximum  from tabelle");
       
      $erkennung = @mysql_result($erk,0,maximum);

       for(
      $i 1;$i 18;$i++) // -->  Gruppen Schleife
      {
                for(
      $b=0;$b<$service_anzahl[$i];$b++) // --> service pro Gruppe schleife
                

                         
      $gr_service  $datenbank->frage("select * from tabelle where Gruppe='$i' and Service='".$service[$i][$b]."' and Erkennung='$erkennung'");
                         
      $zeilen      mysql_num_rows($gr_service);
                         if(
      $zeilen == 1)
                         {
                              
      $service_ausgabe mysql_fetch_row($gr_service); 
                              
      Variablen bearbeiten .........
                               
      mysql_free_result($gr_service);
                         }
                         else{}
                 } 
      //--> service pro Gruppe Schleife Ende


      Erkennung ist die ID für alle Eintrag der service die übertragen werden.
      Also pro speicherung eine ID für alle Gruppen->Service.
      Zuletzt geändert von Somba29; 16.08.2006, 14:32.

      Kommentar


      • #4
        Addiere die Werte in $service_anzahl, multipliziere diese mit 18 und du hast die Zahl, mit der du mit Select * auf die DB losgehst. Da wunderst du dich, wenn das langsam wird?

        Gruß
        Uwe

        Kommentar


        • #5
          //--> mit 18 und du hast die Zahl, mit der du mit Select * auf die DB losgehst. Da wunderst du dich, wenn

          wenn ich diese Abfrage mit einer leeren Tabelle mache ist die
          Information innerhalb von zirka 20 Sekunden da, also kann es nicht an PHP
          liegen sondern mysql hat da wohl ein Problem,
          aus diesen Grund suche ich nach Alternativen Möglichkeiten meine
          Alte Tabelle weiter zu behalten.

          Kommentar


          • #6
            Original geschrieben von Somba29
            wenn ich diese Abfrage mit einer leeren Tabelle mache ist die
            Information innerhalb von zirka 20 Sekunden da
            Auch das kann man ja nicht gerade als schnell bezeichnen. Da einem die Zusammenhänge fehlen und man keine Ahnung hat, was du da vorhast, kann man auch nicht helfen. Ich vermute aber mal, dass dein Datenbankdesign nicht gerade ideal ist, Stichwort Normalisierung

            Gruß
            Uwe

            Kommentar


            • #7
              die 20 Sek war nur eine Schätzwert die Informationen werden
              sehr schnell geliefert von Mysql zu php auch wenn 500 oder 1000
              Einträge in der DB sind aber ab einen gewiesen Volumen der
              Tabelle brauch mysql immer mehr Zeit die Information zu liefern
              obwohl ich nur auf den Letzten Eintrag hinweise, es
              muss doch eine mysql Statman geben was mysql schneller macht oder
              ist da die Grenze von mysql?


              die $service_anzahl hat so im durchschnitt 14 Service.

              Kommentar


              • #8
                oder
                ist da die Grenze von mysql?
                schau dir mal an wieviele beiträge dieses forum hat. und lange muss man hier auf eine response nicht warten..oder?
                mfg

                Kommentar


                • #9
                  jo, dir kann man so nicht helfen.

                  fakt ist, dass deine 18*x queries viel zu viele sind. vorallem wenn man bedenkt, dass du u.U. nur den letzten Eintrag haben willst.

                  Über dein DB Layout kann ich natürlich nichts sagen. Vermute aber ähnlich schlimm.

                  Select * ist natürlich auch überflüssig. hole nur die felder die du brauchst.

                  hast du schlüssel in der DB gesetzt?

                  ein fehlendes limit zeigt deutlich, dass du viel zu viele DS selektierst.

                  ...

                  Kommentar

                  Lädt...
                  X