Großer Performance-Unterschied

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

  • Großer Performance-Unterschied

    Hallo zusammen,

    hab nen etwas umfangreicheres Query, dass in phpMyAdmin 0,0088 sec. braucht, über meine Ausgabe in ner PHP-Seite aber ca. 3 Sekunden. Wie geht das?

    PHP-Code:
     $arr_Daten = array();
    $queryResult mysql_query ($query);
            
    if (!
    $queryResult)
       die(
    'Ungültige Abfrage: ' mysql_error());
            
     while (
    $Datensatz mysql_fetch_assoc ($queryResult)) {
            
       
    array_push ($arr_Daten, array ('Name' => $Datensatz['Name'],
    'Entfernung' => $Datensatz['Distanz'], 'Ort' => $Datensatz['Ort']));
            

    DANKE!

    strauberry

  • #2
    Und wo ist der Query?
    [FONT="Helvetica"]twitter.com/unset[/FONT]

    Shitstorm Podcast – Wöchentliches Auskotzen

    Kommentar


    • #3
      PHP-Code:
      SELECT firmen.Nametd.loc_idtd.text_val AS OrtROUNDCOALESCE( (
      ACOS( (
      SIN0.851300050624 ) * SINRADIANSlat ) ) ) + ( COS0.851300050624 ) *
      COSRADIANSlat ) ) * COSRADIANSlon ) - 0.160217734675 ) ) ) *6371 ) , 0), 2) AS Distanz
      FROM geodb_textdata td
      geodb_hierarchies higeodb_coordinates cofirmen
      WHERE td
      .text_type =500100000
      AND td.is_default_name =AND hi.loc_id td.loc_id AND hi.level >=6
      AND co.loc_id td.loc_id AND COALESCE( ( ACOS( ( SIN0.851300050624 ) *
       
      SINRADIANSlat ) ) ) + ( COS0.851300050624 ) * COSRADIANSlat ) ) *
       
      COSRADIANSlon ) - 0.160217734675 ) ) ) *6371), 0) <25
      AND td.valid_until >= '2007-1-31' AND hi.valid_until >= '2007-1-31'
      AND co.valid_until >= '2007-1-31' AND firmen.loc_id td.loc_id
      ORDER BY Distanz ASC LIMIT 0 
      50 

      Kommentar


      • #4
        Re: Großer Performance-Unterschied

        Original geschrieben von strauberry
        hab nen etwas umfangreicheres Query, dass in phpMyAdmin 0,0088 sec. braucht, über meine Ausgabe in ner PHP-Seite aber ca. 3 Sekunden. Wie geht das?
        Wie misst du denn die Zeit in deinem php-Skript? In PMA wird
        start();
        mysql_query();
        stop();
        gemacht, wenn du aber
        start();
        // skript
        mysql_query();
        // weiteres skript
        stop();
        machst, dauert das natürlich länger

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

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

        Kommentar


        • #5
          Ich sitze da und warte 15 sekunden bis was passiert :-) Also wirklich ein sehr großer Unterschied...

          Kommentar


          • #6
            Da wird nie und nimmer das gleiche gemessen, der Unterschied ist > Faktor 1000.
            Entweder schreibt phpMyAdmin die Query noch um (wird auf der Ergebnisseite angezeigt) oder in den beiden Skripten wird tatsächlich mehr als nur die Query gemessen.

            Frag doch mal den MySQL-Server. slow query log, EXPLAIN, ...

            Kommentar


            • #7
              Das hier gibt das EXPLAIN raus:

              id 1
              select_type SIMPLE
              table td
              type index
              possible_keys text_type_idx,text_native_idx,text_default_idx
              key text_val_idx
              key_len 767
              ref NULL
              rows 80240
              Extra Using where

              Kommentar


              • #8
                Bei 80240 Datensätzen kann es schon etwas dauern, bis dien Abfragen durch sind.

                Wie misst du die Zeit in deinem PHP-Skript?
                it's not a bug,
                it's a feature!

                Kommentar


                • #9
                  In php messe ich bisher gar nicht, nur über phpMyAdmin.

                  Kann man das noch irgendwie optimieren?

                  Kommentar


                  • #10
                    Und woher willst du dann wissen, wie lange deine Abfrage im PHP-Skript dauert?
                    it's not a bug,
                    it's a feature!

                    Kommentar


                    • #11
                      Original geschrieben von strauberry
                      In php messe ich bisher gar nicht, nur über phpMyAdmin.
                      dann mach das doch mal eben...

                      Kommentar


                      • #12
                        Liest du eigentlich PHPMagazin? In Ausgabe 1.2006 gab es einen Artikel "Location Based Services mit PHP entwickeln", in dem Arne Blankerts (wenn ich mich richtig erinnere) eine clevere Lösung deines Problems aufzeigt. Er generiert mit einer Query erstmal eine WHERE-Klausel, die den Suchraum der eigentlichen Query stark verkleinert.

                        Soll ich dir die Details aus dem Artikel mailen?

                        Kommentar


                        • #13
                          Ja das wäre geradezu phantastisch :-)!

                          hidden22@gmx.de

                          VIELEN DANK!

                          Kommentar

                          Lädt...
                          X