performance beim auslesen von z.b. 30000 datensätzen sehr langsam

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

  • performance beim auslesen von z.b. 30000 datensätzen sehr langsam

    hallo

    ich habe mir testhalber einmal ca. 32000 rechnugen angelegt.

    wenn ich jetzt alle rechnungen ausgeben will, dann brauche 1. tabelle rechnungen 2. tabelle kunden

    tabelle kunden ( knr (primary / int(9) / auto_increment),
    vorname(char(30)),
    name(char(30)),
    versichertint(1) )

    tabelle rechnung (rnr (primary / mediumint(9 / auto_increment)),
    knr (mediumint(11)),
    datum (date),
    betrag (float),
    status (int(1)) )

    so scheut mein select für alle aus, um alle rechnugen auszugeben:

    SELECT
    tr.rnr, tr.knr, tk.vorname, tk.name, tk.versicherung, tr.status, tr.betrag, tr.datum
    from
    kunden tk
    LEFT JOIN rechnung tr USING(knr)
    WHERE
    tr.status="1" or tr.status="0" order by tk.knr asc

    nach 1 min kommt diese fehlermeldung:
    Fatal error: Maximum execution time of 60 seconds exceeded in C:\Programme\xampp\htdocs\ss\alle_rechnungen.php on line 37

    was kann ich denn machen?

  • #2
    Die Ausführungszeit hochsetzen oder noch besser die Datensätze auf mehrere Seiten verteilen und nur eine gewisse Anzahl von Datensätze auslesen.
    mfg
    Günni


    Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
    Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
    Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
    City-Tiger - Online durch die Straßen tigern...

    Kommentar


    • #3
      wie kann ich denn die zeit hochsetzen?

      und kannst du mir nen tipp geben wie ich das auf mehrere Seiten aufteilen kann?

      Kommentar


      • #4
        limit x,y

        Forumsuche benutzen für Seitenaufteilung, wurde schon 1000 und ein mal behandelt
        Für Rechtschreibfehler übernehme ich keine Haftung!

        Kommentar


        • #5
          Original geschrieben von hdmnf
          wie kann ich denn die zeit hochsetzen?

          und kannst du mir nen tipp geben wie ich das auf mehrere Seiten aufteilen kann?
          Die Zeit kannst du in der PHP.ini datei erhöhen. Wenn du das ganze aber auf mehrere Seiten verteilst brauchst du keine änderung der Zeit.
          Du kannst mit dem Zusatz LIMIT offset, Anzahl in deiner SQL Abfrage immer nur eine bestimmte Anzahl von Datensätze auslesen.
          Zum Seitenweise blättern schau hier:
          http://www.php-resource.de/forum/sho...n+Datens%E4tze
          http://www.php-resource.de/forum/sho...n+Datens%E4tze
          http://www.php-resource.de/forum/sho...n+Datens%E4tze
          http://www.php-resource.de/forum/sho...n+Datens%E4tze
          http://www.php-resource.de/forum/sho...n+Datens%E4tze
          mfg
          Günni


          Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
          Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
          Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
          City-Tiger - Online durch die Straßen tigern...

          Kommentar


          • #6
            gibt es denn noch eine möglichkeit schneller aus der db auszulesen, außer einen hyper server zu kaufen?

            Kommentar


            • #7
              EXPLAIN auf den Query, ggf. die Indizierung verbessern - danach hast du nix mehr an der Hand außer bessere Hardware

              Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

              bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
              Wie man Fragen richtig stellt

              Kommentar


              • #8
                Original geschrieben von ghostgambler
                EXPLAIN auf den Query, ggf. die Indizierung verbessern - danach hast du nix mehr an der Hand außer bessere Hardware
                Das wird hier vermutlich nichts bewirken. Das Problem hier liegt bei der Ausgabe. Wenn du 30000 Datensätze auf einer Webseite ausgeben willst wird dies ne ganze weile dauern. Deswegen würde ich nach wie vor empfehlen die Datensätze auf mehrere Seiten zu verteilen.
                mfg
                Günni


                Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
                Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
                Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
                City-Tiger - Online durch die Straßen tigern...

                Kommentar


                • #9
                  Ich frage mich gerade, ob das Ziel vielleicht geändert werden kann.

                  Was genau willst du mit der 30k starken Liste nachher machen?

                  Was hindert Dich daran Seitenzahlen zu nutzen und dann mit LIMIT 0,1000 zu arbeiten?

                  Gruß
                  mein Honda Forum | meine Scripte

                  Kommentar


                  • #10
                    ersteinmal vielen dank für die antworten!

                    ich habe mein programm getestet und dabei ist mir aufgefallen, dass ich probleme bekomme, wenn soviele kunden/rechnugen vorhanden wären.

                    ich habe vorerst einmal den time out verstellt, aber später werde ich es auf mehrere seiten verteilen.

                    Kommentar

                    Lädt...
                    X