SQL Query killt DB

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

  • SQL Query killt DB

    Hab folgendes query in mysql query browser:

    PHP-Code:
    SELECT COUNT(*) FROM `statuss JOIN `info
    ON
    (p.pid=s.pidWHERE kundennummer='xxxx' 
    Dies ist nur der Count-Test, ich wollte erst die Ergebnismenge wissen.

    Die info Tabelle liefert mit der Where Klausel ca 12.000 Ergebnisse,
    die status enthält ca 85.000 und der Query oben, sei es ein Equi-Join oder
    Left Join müsste doch eigentlich kein kartesisches Produkt liefern, daher
    ist mir nicht klar, warum sich die DB dabei aufhängt.
    Bekomme nämlich eine "Server Shutdown in process" MSG

    und habe kein Plan, wieso
    Das Count ist nur ein Test, ziel ist ein SELECT * ,aber eigentlich ein DELETE FROM, doch nur, wenn das ding sicher funzt.

    Funzt auch nicht:
    PHP-Code:
    SELECT FROM `statuss JOIN `info
    ON
    (p.pid=s.pidWHERE kundennummer='xxxx' LIMIT 100 
    Es ist kein kartesisches Produkt, daher ist mir nicht klar, warum die Last so hoch ist
    Zuletzt geändert von Seikilos; 04.07.2008, 17:35.
    SQL Injection kitteh is...

  • #2
    Von was für einer Datenbank reden wir denn?

    Kommentar


    • #3
      mysql 5
      SQL Injection kitteh is...

      Kommentar


      • #4
        Code:
        SELECT COUNT(*)
        FROM `status` s LEFT JOIN `info` p USING(pid)
        WHERE kundennummer='xxxx'
        Ggf. auch mal statt dem COUNT all, den COUNT auf ne bestimmte Spalte setzen.

        Kommentar


        • #5
          Beide Varianten negativ
          SQL Injection kitteh is...

          Kommentar


          • #6
            Ist n Localhost?
            Dann solltest du den Server mal überprüfen. An der Query kanns bei den Dimensionen eigentlich nicht liegen.

            Kommentar


            • #7
              Moment, der Testserver ist nicht lokal (online, aber nicht produktiv) dieser kriegts nicht hin, der lokalhost liefert mir beim Count nach 190.06 sek den wert 23676.

              Nun ist das Problem, dass es zu lange dauert, vor allem für online
              SQL Injection kitteh is...

              Kommentar


              • #8
                hast du vollzugriff auf den server?
                kannst du dir mal die prozesse anzeigen lassen?
                wenn es ein webhosting paket ist ... kann es daran liegen das die anderen kunden schon viel mit mysql machen.

                sonst wäre ein index auf die spalte die gezählt wird sinnvoll.
                Gruß
                Uzu

                private Homepage

                Kommentar


                • #9
                  Ne, kein Vollzugriff, es geht letztendlich ja um ein SELECT * und wenn da klappt ein DELETE FROM, da wäre ein Index nicht so passend und über den Tag verteilt hab ich dies öfter getestet, ich bezweifele, dass die anderen 9 User im Moment viel mit dem Server machen
                  SQL Injection kitteh is...

                  Kommentar


                  • #10
                    Original geschrieben von Seikilos
                    Moment, der Testserver ist nicht lokal (online, aber nicht produktiv) dieser kriegts nicht hin, der lokalhost liefert mir beim Count nach 190.06 sek den wert 23676.

                    Nun ist das Problem, dass es zu lange dauert, vor allem für online
                    also bei den Laufzeiten fehlt die bestimmt ein Index!

                    lege mal einen Index auf status.kundennummer und ein Index auf info.pid,
                    sowie gib die Ausgabe vom phpmyadmin bei

                    EXPLAIN SELECT COUNT(*) FROM `status` s JOIN `info` p
                    ON(p.pid=s.pid) WHERE kundennummer='xxxx'

                    mal hier an
                    TBT

                    Die zwei wichtigsten Regeln für eine berufliche Karriere:
                    1. Verrate niemals alles was du weißt!


                    PHP 2 AllPatrizier II Browsergame

                    Kommentar


                    • #11
                      Öh, Indezes waren es tatsächlich, ferner hab ich gerade gesehen, dass die String Spalten alle Tinytext sind
                      Hab diese auf varchar(255) gestellt und indiziert und nun läufts.

                      Muss mal denjenigen mit nem Telefonbuchschlagen

                      Danke für die Hilfe!
                      SQL Injection kitteh is...

                      Kommentar

                      Lädt...
                      X