Schnellere Abfrage von 1. und letzten Eintrag?

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

  • Schnellere Abfrage von 1. und letzten Eintrag?

    Hallo Forum,

    ich habe ein kleines Problem.

    Und zwar habe ich eine große Datenbank mit 44 Tabellen in denen jeweils Datensätze eines bestimmten Zeitraums stehen.

    Nun muß ich diesen Zeitraum bestimmen und mach deshalb folgende Abfrage:

    PHP-Code:
    function dataRange($stationNr) {
        
    $result mysql_query("SELECT DATE FROM `$stationNr` ORDER BY DATE LIMIT 0,1");
        if (! 
    $result) { die ($php_errormsg); }
        
    $row mysql_fetch_array($resultMYSQL_ASSOC);
        
    preg_match("/(\d{4})-(\d{2})-(\d{2})/",$row['DATE'], $tmpp);
        
        
    $result mysql_query("SELECT DATE FROM `$stationNr` ORDER BY DATE DESC LIMIT 0,1");
        if (! 
    $result) { die ($php_errormsg); }
        
    $row mysql_fetch_array($resultMYSQL_ASSOC);
        
    preg_match("/(\d{4})-(\d{2})-(\d{2})/",$row['DATE'], $tmp);
        
        return 
    "$tmpp[3].$tmpp[2].$tmpp[1] - $tmp[3].$tmp[2].$tmp[1]";
        
    //return "01.01.1949 - 03.01.2004";

    das erste Select gibt mir den ersten eintrag und das zweite den letzten.
    Alles schön und gut, nur leider ist das bei 44 Tabellen zu zeit und speicherintensiv.

    mysql selbst stellt ja keine funktion für den ersten und letzten eintrag zur verfügung (warum eigentlich nicht?), hat jemand von euch eine idee wie ich diese abfrage optimieren kann?

    vielen dank

  • #2
    hab mir das dingens von dir nicht alles angesehen.....


    warum eigentlich nicht?
    nur für dich? *gg*

    jemand von euch eine idee wie ich diese abfrage optimieren kann?
    optimiere mal deine datenbank. 44 tabellen erscheinen mir auch ein wenig viel.

    merke: daten von gleiche struktur gehören immer in die gleiche tabelle. somit hättest du auch nur eine datentabelle.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      naja, ich finde so eine Funktion wäre sehr gefragt. so oft wie man im internet die frage liest "wie ersten/letzten eintrag ermitteln"

      aber lassen wir das!



      und was heißt optimieren?
      das sind 44 stationen, und jede station hat numal tw. datensätze von 1870 an.. für jeden tag gibt es 77 einträge... das heißt...

      133jahre * 365=48545
      48545*77=3737965

      das heißt, satte 3.737.965 daten in einigen tabellen. und ich denke (oder nich?) da ist die variante das ich jeder station eine tabelle gebe, die richtige..

      hm.. du meinst also ich haue alle zusammen.. mache noch ein feld "stationsnummer" auf... und hab dann 360mb an daten in einer tabelle....
      dann sehe ich ja gar nicht mehr durch

      zumal... bringt das kein geschwindigkeitsvorteil wenn ich dann trotzdem zu jeder station den datenzeitraum abfrage...

      Kommentar


      • #4
        Original geschrieben von tsoP ehcstueD
        133jahre * 365=48545
        48545*77=3737965

        das heißt, satte 3.737.965 daten in einigen tabellen. und ich denke (oder nich?) da ist die variante das ich jeder station eine tabelle gebe, die richtige..
        nein
        trotzdem zu jeder station den datenzeitraum abfrage...
        aber in einer abfrage
        Code:
        SELECT 
          station_id,
          MIN(date),
          MAX(date)
        FROM
          station
        GROUP BY
          station_id
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          najut, wenn ihr dat sagt.

          ich werde das mal checken

          Kommentar

          Lädt...
          X