Re: @sander & CB, Re: Optionsfeld - Doppeleinträge vermeiden - baseportal Forum - Web-Anwendungen einfach, schnell, leistungsfähig!
baseportal
English - Deutsch "Es gibt keine dummen Fragen - jeder hat einmal angefangen"

 baseportal-ForumDie aktuellsten 10, 30, 50, 100 Einträge anzeigen.  

 
 Ausgewählter Eintrag: Zur Liste 
    Beitrag von Olaf Mertgen (263 Beiträge) am Freitag, 10.Mai.2002, 15:40. WWW: www.shareware4u.de
    Re: @sander & CB, Re: Optionsfeld - Doppeleinträge vermeiden

      Dass es keinen Unterschied macht, ob baseportal selbst die Schleife durchläuft oder das Template, davon bin ich schon ausgegangen. Ich hab auch eher daran gedacht, eine besonders schlaue Count-Methode zu implementieren, die das eben schneller hinbekommt als die Schleife. Könnte man da nicht irgendwie die Technik für $_amount_all bzw. $_amount_query zu Hilfe nehmen.

      Bei SQL ist select count ... auf jeden Fall schneller, ich hab das jetzt mal mit Oracle getestet.
      Rechner: P4 1,8 - Speicher: 1 GB RAMBUS - Platte: Raid-System
      Tabelle mit 2.500.000 Datensätze aus 2 Feldern. Bei je 100.000 Datensätzen ist Feld 1 identisch, d.h. als Ergebnis kommt 250 x 100.000 raus.

      Ich habe alle Abfragen 3 mal ausgeführt und den Mittelwert genommen.

      1. Aufruf:
      select count(*) from test
      Dauer: im Mittelwert ca. 0,28 Sekunden
      Ergebnis liefert die Gesamtzahl aller Datensätze: 2.500.000

      2. Aufruf:
      select feld1, count(*) from test group by feld1
      Dauer: im Mittelwert ca. 2,11 Sekunden
      Ergebnis liefert die Menge gruppiert nach feld1, d.h. 250 Datensätze mit jeweils dem Wert 100.000 im Feld 2

      3. Aufruf:
      Schleife als Stored Proc (ist eine procedure, die direkt auf der Datenbank ausgeführt wird und nur das Ergebnis zurückliefert)
      Dauer: im Mittelwert ca. 28.11 Sekunden

      Ich denke, man sieht recht eindeutig den Unterschied. Ich habe bewusst nicht nur 7.000, sondern 2.500.000 genommen, da der Test-Rechner eine ziemlich starke Maschine ist und die Unterschiede dann deutlicher werden.

      Anwendungsbereiche gibt es im übrigen nicht nur bei Statistiken. Ich könnte mir den Zugriff bei vielen Dingen vorstellen, die durchaus auch öfter als 1x pro Tag aufgerufen werden.

      Gruß, Olaf


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von Klaus S. (11 Beiträge) am Dienstag, 7.Mai.2002, 23:53.
    Optionsfeld - Doppeleinträge vermeiden

      Wer kann helfen?

      In einem Suchformular werden aus einem Textfeld der Datenbank die Einträge abgefragt und als Optionsfeld ausgegeben. Code sieht so aus:

      <select name="Land~=" size=1>
                         <option> </option>                  
      <loop db=lastminute sort=Land>
                        <option value=$Land>$Land
      </loop>
                        </select>
      

      Leider werden dabei auch gleiche Einträge mehrmals dargestellt. Wie kann man solche Doppel- bzw. Mehrfacheinträge im Optionsfeld vermeiden?

      Gruß Klaus S.

     Antworten

    Beitrag von Sander (8133 Beiträge) am Mittwoch, 8.Mai.2002, 09:21.
    Re: Optionsfeld - Doppeleinträge vermeiden

      <loop db=lastminute sort=Land code=perl>
      $laender{$land}++;
      </loop>
      <select name="Land~=" size=1>
      <option> </option> 
      <perl>
      foreach $land(keys %laender)
      {
        out "<option value=$land>$land</option>\n";
      }
      </perl>
      </select>
      

      Sander

     Antworten

    Beitrag von Sander (8133 Beiträge) am Mittwoch, 8.Mai.2002, 09:22.
    Re: Optionsfeld - Doppeleinträge vermeiden

      die zeile ist falsch:
      $laender{$Land}++;
      

      Sander

     Antworten

    Beitrag von Klaus S. (11 Beiträge) am Mittwoch, 8.Mai.2002, 12:49.
    Re: Optionsfeld - Doppeleinträge vermeiden

      Hallo Sander,

      vielen Dank!!! für den Code. Wenn man die Groß- und Kleinschreibung auch in den anderen Zeilen richtig setzt funktioniert es prima.

      Gruß Klaus S.

     Antworten

    Beitrag von Sander (8133 Beiträge) am Mittwoch, 8.Mai.2002, 13:43.
    Re: Optionsfeld - Doppeleinträge vermeiden

      ??? der rest muß so passen, wie er da steht...

      Sander

     Antworten

    Beitrag von Klaus S. (11 Beiträge) am Donnerstag, 9.Mai.2002, 00:54.
    Re: Optionsfeld - Doppeleinträge vermeiden

      Hallo Sander,

      Du hast recht, es funktioniert auch wenn man in den anderen Zeilen land mit kleinem l schreibt.
      Aber ich habe auch recht, denn wenn man Land mit großem L schreibt funktioniert es auch. ;-)

      Trotzdem nochmals vielen Dank!

      Gruß Klaus S.

     Antworten

    Beitrag von Claus S. (1671 Beiträge) am Mittwoch, 8.Mai.2002, 11:26.
    @sander & CB, Re: Optionsfeld - Doppeleinträge vermeiden

      Hallo Sander & CB,

      hab hierzu eine noch eine seit längerer Zeit unbeantwortete Frage: die Funktion 'foreach $land(keys %laender)' läuft ja soweit prächtig; ich habe sie genutzt, um zu wissen, wieviel Adressen je Postleitzahl ich habe. Bis zu einer Satzanzahl von 5000 - 6000 lief das auch ohne Problem, mittlerweile habe ich aber ca. 7500 Adressen, und das Template läuft ständig auf einen Fehler, d.h. bei mir erscheint 'Seite nicht gefunden`, im Errorlog on netdirekt steht was von too big und timeout. und eine satzanzahl von 7500 ist ja angesichts der Tatsache, dass Netdirekt Pakete mit 100.000 und 1.000.000 Sätze pro Datanbank anbietet, gering.

      Gruss Claus

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Mittwoch, 8.Mai.2002, 19:04.
    Re: @sander & CB, Re: Optionsfeld - Doppeleinträge vermeiden

      Es kommt darauf an, was man mit den Datensätzen macht: Angenommen eine Operation dauert 0.1 Sekunden / Datensatz, dann hat man schon bei 100 Datensätzen eine Laufzeit von 10 Sekunden, was für ein Webskript eine Ewigkeit ist... Anscheinend werden in Deinem Skript die 5000-6000, bzw. 7500 Datensätze der Reihe nach durchlaufen, das dauert natürlich seine Zeit - Datensätze der Reihe nach zu durchlaufen is nie eine gute Idee, hier müsste man wohl was an der Logik ändern. Dafür gibts ja auch baseportal (bzw. Datenbanken an sich ;-) ), das sehr schnell aus vielen Datensätzen die richtigen raussuchen kann... ;-) Darauf beziehen sich auch die Zahlen mit den 100.000 und 1.000.000 Datensätzen: Man kann bei diesen Paketen z.b. 100.000 Datensätze speichern und z.b. mit get "Feld==..."; auch sehr schnell auslesen...

     Antworten

    Beitrag von Claus S. (1671 Beiträge) am Mittwoch, 8.Mai.2002, 19:35.
    Re: @sander & CB, Re: Optionsfeld - Doppeleinträge vermeiden

      Hallo Christoph,

      es gab mal Zeiten, da hast Du Alternativen angeboten ;-)

      ... mal im Ernst, wenn das so wie beschrieben läuft, ist die von Sander angebotene Lösung eher suboptimal, aber es muss doch eine Lösung für solche Statistiken geben: z.B. Ausgabe der Anzahl der Sätze pro PLZ in einer Adressdatei. Also eher nützlich als exotisch.

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Mittwoch, 8.Mai.2002, 20:32.
    Re: @sander & CB, Re: Optionsfeld - Doppeleinträge vermeiden

      Dazu müsste ich mehr wissen (um Alternativen anbieten zu können), z.b. den Template-Code. Soweit wie ichs jetzt verstehe wäre doch ein

      get "PLZ==12345", "adressen";
      out $_amount;
      

      ausreichend um die Anzahl der Adressen mit der PLZ 12345 rauszufinden - aber so einfach kanns nich sein, sonst hätte Sander sicher nich was anderes vorgeschlagen... ;-)

     Antworten

    Beitrag von Claus S. (1671 Beiträge) am Mittwoch, 8.Mai.2002, 20:48.
    Re: @sander & CB, Re: Optionsfeld - Doppeleinträge vermeiden

      Hallo Christoph,

      Du bist ja richtig witzig, hast Du das in Spanien gelernt?

      Darauf wäre ich auch gekommen, aber was soll ich mit einer PLZ? Und bei ständiger Datenpflege ändert sich auch die Anzahl der unterschiedlichen PLZ.

      Das ist das betreffende Programm, damit es nicht hängenbleibt, habe es per range auf 6000 Sätze begrenzt.

      Aufruf: http://bestguide.de/baseportal/bgd/bg_adrcount

      Code:

      get "d_okey==* range=0,6000","../bgd/bgdata";
              while (get_next("../bgd/bgdata"))
                {
                 $Anzahl{$d_okey}++;
                }
              &do_content_o("400","396","","","");             # Ausgabe Content-Section
              &do_headline("Adress-Statistik","","","220");    # Ausgabe Content-Headline
      out <<EOF;
              <TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
              <TR><TD ALIGN="center">
                  <TABLE WIDTH='90%' BORDER=0>
                  <TR><TH CLASS='th1'>&nbsp;Ort</TH>
                      <TH CLASS='th1'>&nbsp;Adr&nbsp;</TH></TR>
      EOF
                       $work_count = 0; 
                       #    foreach $d_okey(sort  (keys %Anzahl))
                       foreach $d_okey(sort {$a<=>$b}keys %Anzahl)
                        {
                         get "o_okey==$d_okey & o_okey2==1", "../bgd/bgorte";
      
                         if (($o_okey eq $d_okey) && ($o_okey2 eq "1"))                       {                        $work_ort = $o_ortgesamt; # Ortsname                       }                    else                       {                        $work_ort = "kein Ort! "; # Ortsname not found                       }                    out "<TR BGCOLOR=" . ($work_count %2 ? "#A0A0A0" : "#E0E0E0") . ">\n";                    out "<TD CLASS='b8' ALIGN='left' NOWRAP>&nbsp;$d_okey $work_ort&nbsp;</TD>";                    out "<TD CLASS='b8' ALIGN='right' NOWRAP>&nbsp; $Anzahl{$d_okey} &nbsp; </TD>";                    out "</TR>\n";                    $work_count++;                   }              out "</TD></TR></TABLE>";
              out "Runtime : &nbsp;";         out runtime();         out "<BR><BR><A CLASS='link3' HREF='javascript:window.close();'>[Schliessen]</A>\n";         out "</TD></TR></TABLE>\n";         &do_content_u; # Ausgabe Content-Section Unten            </perl> </BODY></HTML>

     Antworten

    Beitrag von Sander (8133 Beiträge) am Mittwoch, 8.Mai.2002, 20:54.
    Re: @sander & CB, Re: Optionsfeld - Doppeleinträge vermeiden

      sag mal Claus, kannst du deine eigenen Variablen noch verstehen? ;-) Ist jetzt nicht böse gemeint, aber der Code liest sich sowas von schwer... Ich seh da nicht wirklich durch.

      Sander

     Antworten

    Beitrag von Claus S. (1671 Beiträge) am Mittwoch, 8.Mai.2002, 22:42.
    Re: @sander & CB, Re: Optionsfeld - Doppeleinträge vermeiden

      Hallo Sander,

      habe mal das komplette template gepostet, wie man's macht isses verkääährt ;-)

      habe hier mal den code (der übrigens von dir ist) ohne kosmetik:

      get "d_okey==* range=0,6000","../bgd/bgdata";
       
      while (get_next("../bgd/bgdata"))
        {
         $Anzahl{$d_okey}++;
        }
      foreach $d_okey(sort {$a<=>$b}keys %Anzahl)
         {
          get "o_okey==$d_okey & o_okey2==1", "../bgd/bgorte";
      
          if (($o_okey eq $d_okey) && ($o_okey2 eq "1"))        {         $work_ort = $o_ortgesamt; # Ortsname        }     else        {         $work_ort = "kein Ort! "; # Ortsname not found        }         $d_okey $work_ort $Anzahl{$d_okey}    }

      Aufruf: http://bestguide.de/baseportal/bgd/bg_adrcount

      Wie gesagt, es funzt, aber ab einer gewissen Satzanzahl bricht er ab

     Antworten

    Beitrag von Olaf Mertgen (263 Beiträge) am Freitag, 10.Mai.2002, 11:59. WWW: auto-surf.de
    Re: @sander & CB, Re: Optionsfeld - Doppeleinträge vermeiden

      Hallo,

      interessant wäre mal, welcher der beiden Teile mehr Zeit verbraucht, also eine Ausgabe von runtime nach der while-Schleife.

      Im übrigen habe ich das Template gerade mal aufgerufen und bei mir wurde eine Gesamtzeit von 9.30 ausgegeben. Wenn ich mich recht erinnere, dann liegt die max. Ausführungszeit aber bei 180. D.h. es kann nicht an der Ausführungszeit liegen und dann liegt es vermutlich an der Größe des belegten Speichers. Dafür wäre dann interessant, wie groß die Tabellen sind bzw. wie groß 1 Datensatz pro Tabelle ist.

      Wenn z.B. bgdata sehr groß ist, dann könnte man das Problem eventuell umgehen, indem man beim Speichern der Datensätze in bgdata jeweils eine Kopie in einer anderen Tabelle speichert, in der nur die PLZ abgelegt wird. Dadurch ist die 2. Tabelle dann sehr klein und der Speicherverbrauch während der Schleife entsprechend niedriger.

      Gruß, Olaf

     Antworten

    Beitrag von Claus S. (1671 Beiträge) am Freitag, 10.Mai.2002, 13:04.
    Re: @sander & CB, Re: Optionsfeld - Doppeleinträge vermeiden

      Hallo Olaf,

      erscheint mir wahrscheinlich und auch sehr logisch, was Du schreibst. Aber dass die (geringe) Grösse schon Schwierigkeiten macht, stimmt micht bedenklich.

      also, habe zweite runtime gesetzt und probiert: 8,42 / 8,54

      Die Datei bgdata hat 7531 Sätze, ist 1.313 KB gross, hat 44 Felder, davon 17 Pflichtfelder.

      Gruss Claus

     Antworten

    Beitrag von Olaf Mertgen (263 Beiträge) am Freitag, 10.Mai.2002, 11:47. WWW: www.shareware4u.de
    Re: @sander & CB, Re: Optionsfeld - Doppeleinträge vermeiden

      Erwischt :-)

      Kannst du dich noch daran erinnern, das ich dich um eine solche Funktion gebeten haben? Ich habe den Vergleich mit SQL gezogen:
      select plz, count(*) from daten group by plz

      Damit bekomme ich in SQL die Anzahl pro PLZ. Dein Vorschlag war damals genau der, alle Datensätze zu durchlaufen und zu zählen. Hier schreibst du jetzt, dass das nie gut sei.

      Ich muss Claus rechtgeben, eine solche Funktion wird öfters mal gebraucht und es wäre wirklich sehr hilfreich, wenn es eine Count-Funktion oder sowas geben würde.

      Falls du nicht mehr genau weißt, was das SQL da oben macht. Da werden zunächst alle Datensätze nach PLZ gruppiert, dann wird die Anzahl pro Gruppe festgestellt und anschließend zusammen mit der jeweiligen Postleitzahl ausgegeben.

      select count(*) from daten

      gibt z.B. die Gesamtzahl aller Datensätze aus, da alle Datensätze zusammengefasst werden. Sowas ähnliches musst du ja schon haben, um $_amount_all belegen zu können.

      Gruß, Olaf

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Freitag, 10.Mai.2002, 13:43.
    Re: @sander & CB, Re: Optionsfeld - Doppeleinträge vermeiden

      Stimmt, man sollte nie nie sagen - es muss natürlich heissen: "ist selten gut & kommt darauf an" ;-)

      In diesem Fall: Das geht bis zu einer bestimmten Menge gut & dann isses auch ok, weil wozu sich den Kopf für was komplizierteres zerbrechen... Wichtig ist auch, wie oft denn so eine Statistik aufgerufen wird: Bei, sagen wir 1mal / Tag, kann die ruhig 1-2 Sekunden laufen - bei 1mal / Sekunde is das einfach nich drin ;-)

      Meine Aussage auf die Du Dich beziehst erhalte ich aber hiermit aufrecht (poch, poch ;-) ) - wo ist der Unterschied (in der Geschwindigkeit) ob nun baseportal zählt oder eine eigene Schleife? Beides ist dasselbe Perl auf demselben Rechner, d.h. die Schleife läuft genauso lange...

      Und hier stellt sich mir die Frage: Wie lange braucht denn z.B. Deine SQL-Datenbank um Dir die PLZ-Statistik auszuwerfen? Geht das bei z.B. 7000 Datensätzen ratzfatz (z.b. 0.1 Sekunden)? Oder braucht das auch länger (>= 1 Sekunde)?

      Wenn letzteres, dann ist das "count" nix anderes als eine in die DB verlagerte Zählschleife, die alle Datensätze durchgeht...

      Wenn ersteres, dann gibt es anscheinend einen schlauen Algorithmus, der solche Zählereien in 0.0 abarbeitet, das wäre dann natürlich ne Überlegung wert, diesen direkt zu einzubauen...

      So, was noch: Das $_amount_all funktioniert ganz anders, nach der Analyse welche Datensätze zu einem Abfragetreffer gehören liegt eine Liste mit eben diesen Datensätzen vor - die Grösse dieser Liste festzustellen ist ein Klacks - über den Inhalt dieser Liste weiss baseportal allerdings an sich erstmal nichts - um also irgendwas in der Richtung festzustellen, muss es sich den Inhalt genau anschauen - also alle Datensätze durchlaufen....... ;-)

     Antworten

    Beitrag von Olaf Mertgen (263 Beiträge) am Freitag, 10.Mai.2002, 15:40. WWW: www.shareware4u.de
    Re: @sander & CB, Re: Optionsfeld - Doppeleinträge vermeiden

      Dass es keinen Unterschied macht, ob baseportal selbst die Schleife durchläuft oder das Template, davon bin ich schon ausgegangen. Ich hab auch eher daran gedacht, eine besonders schlaue Count-Methode zu implementieren, die das eben schneller hinbekommt als die Schleife. Könnte man da nicht irgendwie die Technik für $_amount_all bzw. $_amount_query zu Hilfe nehmen.

      Bei SQL ist select count ... auf jeden Fall schneller, ich hab das jetzt mal mit Oracle getestet.
      Rechner: P4 1,8 - Speicher: 1 GB RAMBUS - Platte: Raid-System
      Tabelle mit 2.500.000 Datensätze aus 2 Feldern. Bei je 100.000 Datensätzen ist Feld 1 identisch, d.h. als Ergebnis kommt 250 x 100.000 raus.

      Ich habe alle Abfragen 3 mal ausgeführt und den Mittelwert genommen.

      1. Aufruf:
      select count(*) from test
      Dauer: im Mittelwert ca. 0,28 Sekunden
      Ergebnis liefert die Gesamtzahl aller Datensätze: 2.500.000

      2. Aufruf:
      select feld1, count(*) from test group by feld1
      Dauer: im Mittelwert ca. 2,11 Sekunden
      Ergebnis liefert die Menge gruppiert nach feld1, d.h. 250 Datensätze mit jeweils dem Wert 100.000 im Feld 2

      3. Aufruf:
      Schleife als Stored Proc (ist eine procedure, die direkt auf der Datenbank ausgeführt wird und nur das Ergebnis zurückliefert)
      Dauer: im Mittelwert ca. 28.11 Sekunden

      Ich denke, man sieht recht eindeutig den Unterschied. Ich habe bewusst nicht nur 7.000, sondern 2.500.000 genommen, da der Test-Rechner eine ziemlich starke Maschine ist und die Unterschiede dann deutlicher werden.

      Anwendungsbereiche gibt es im übrigen nicht nur bei Statistiken. Ich könnte mir den Zugriff bei vielen Dingen vorstellen, die durchaus auch öfter als 1x pro Tag aufgerufen werden.

      Gruß, Olaf

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Freitag, 10.Mai.2002, 17:39.
    Re: @sander & CB, Re: Optionsfeld - Doppeleinträge vermeiden

      Wow, nich schlecht, 2,5 Mio. Datensätze durchwühlen in 28.11 Sekunden!

      Wie auch immer, sieht man deutlich was wo wie zum Tragen kommt: Gesamtzahl feststellen is am schnellsten, wie bei baseportal auch... für das "count" gibts anscheinend nen Algorithmus, tja, jetzt müsste man nur noch wissen wie der aussieht....... Mmhhh.......

      Wenn Du nochmal Lust auf nen Test hast würde mich folgendes interessieren: Was, wenn in Feld1 in den 2,5 Mio. DS jeweils was anderes drin steht? Also dann als Ergebnis 2,5 Mio. DS mit Feld2 = 1 rauskäme (beim 2. Aufruf) - hier würde mich die Geschwindigkeit interessieren - wenn die dann auch 2,8 Sekunden ist, dann isses tatsächlich ne normale Schleife - wenn nich, dann intelligenter gelöst... ;-)

     Antworten

    Beitrag von Claus S. (1671 Beiträge) am Freitag, 10.Mai.2002, 18:11.
    Re: @sander & CB, Re: Optionsfeld - Doppeleinträge vermeiden

      Hallo zusammen,

      trotz aller akademischer Denkansätze würde mich erst mal interessieren, ob es 'derzeit' möglich ist, die Aufgabenstellung mit bp-Mitteln, zu lösen.

      Gruss Claus

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Samstag, 11.Mai.2002, 14:50.
    Re: @sander & CB, Re: Optionsfeld - Doppeleinträge vermeiden

      Klar, mit baseportal geht alles... ;-)

      Nur nicht so, man muss die Sache von hinten her aufzäumen, Olaf hat das auch schon geschrieben: Beim Speichern gleich die Statistik mit aufbauen - also eine 2. DB machen, die die Felder "PLZ" und "Anzahl" enthält und vor dem Speichern des normalen Datensatzes sowas machen:

      <perl>
      if($cmd eq "put")
      {
        get "PLZ==$_put{PLZ}", "statistik";
        mod [ "PLZ", $_put{PLZ}, "Anzahl", $Anzahl+1 ], "statistik";
      }
      </perl>
      

      Das Ganze wird noch ein Eck komplizierter, da man Ändern und Löschen noch beachten muss...

     Antworten

    Beitrag von Olaf Mertgen (263 Beiträge) am Freitag, 10.Mai.2002, 21:00. WWW: auto-surf.de
    Re: @sander & CB, Re: Optionsfeld - Doppeleinträge vermeiden

      Ja, ist auch mein neuer Lieblingsrechner, die Kiste ist rattenschnell :-) Aber Oracle zählt ja auch zu den schnellsten Datenbanken überhaupt.

      Also in Feld 1 standen die Werte 1 - 250 und in Feld 2 standen jeweils die Werte 1 - 100.000, d.h. in Kombination sind alle Datensätze unterschiedlich.

      Ich habe jetzt mal folgendes ausprobiert liefert (insgesamt 2.500.000 Datensätze als Ergebnis mit dem Zählwert = 1):
      select count(*), feld1, feld2 from test group by feld1, feld2

      Das hat im Mittelwert ca. 60 Sekunden gedauert, also sogar länger als die Schleife.

      Also meines Erachtens muss hinter count etwas anderes stecken und das erklärt auch den Unterschied. Über group by werden die Datensätze zunächst nach den angegebenen Felder grupppiert und dann für jede Gruppe die Menge festgestellt. Wenn ich natürlich pro Gruppe nur einen Datensatz habe, dann dürfte das länger dauern als die Schleife, da ja noch die Gruppierung hinzukommt. Sobald aber pro Gruppe mehrere Datensätze existieren wird das ganze schneller als die Schleife.

      Deshalb hab ich ja schonmal überlegt, ob du da nicht auf die Technik für $_amount_all und $_amount_query zurückgreifen kannst. Du müsstest nur zunächst die Gruppen bilden und dann pro Gruppe ein $_amount_query feststellen.

      Also wenn du da was hinbekommen könntest, das wäre echt super.

      Gruß, Olaf

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Samstag, 11.Mai.2002, 14:42.
    Re: @sander & CB, Re: Optionsfeld - Doppeleinträge vermeiden

      Jups, das deckt sich mit meiner Vermutung: Es steckt ein Algorithmus dahinter, der aber nur dann greift, wenn auch viele gleiche Felder vorkommen - ich denk ich weiss wie der aussehen müsste... Und Du hast recht: Das ist ähnlich wie die Gesamtgrösse bei $_amount_all o.ä. feststellen... ;-)

      Problem wg. Einbauen: Sicher wünschenswert, aber ich hab ungefähr 1 Mio. anderer Sachen zu machen, die wichtiger sind (bestimmt auch für Dich ;-) ), das wird also noch ne ganze Weile dauern... :-(

      Oracle/Performace: Ich les immer, dass MySQL schneller wäre ;-)

     Antworten

    Beitrag von Olaf Mertgen (263 Beiträge) am Sonntag, 12.Mai.2002, 03:44. WWW: auto-surf.de
    Re: @sander & CB, Re: Optionsfeld - Doppeleinträge vermeiden

      Muss ja nicht bis morgen sein :-) Hab mir bisher ja auch helfen könne, aber wäre halt schön, wenn es irgendwann kommt.

      Oracle vs. MySQL - Da will ich mich nicht festlegen. MySQL soll gepuscht werden, daher auch Freeware, aber meines Wissens ist Oracle zumindest im Hinblick auf sehr große und komplexe Datenbanken schneller. Ich glaube, die kann man aber auch nicht ganz mit einander vergleichen, denn soweit ich weiß, ist Oracle viel komplexer und kann bedeutend mehr als MySQL. Das fängt schon beim einfachen SELECT an, in der aktuellen Version kann MySQL ja noch nicht mal Sub-Queries, was schon eine Performance-Bremse ist, da ich zunächst ein einfaches SELECT ausführen muss und dann mit dem Ergebnis ein neues SELECT ausführen. Bei Oracle kann ich die einfach ineinander schachteln:
      select * from test where test2_id in (select id from test2 where test3_id in (select id from test3))
      Ich erhalte also sofort das Ergebnis, dass ich benötige und muss nicht unnötig Daten über's Netz schicken.

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Dienstag, 14.Mai.2002, 12:04.
    Re: @sander & CB, Re: Optionsfeld - Doppeleinträge vermeiden

      Ja, klar, dass Oracle (weit) mehr kann als MySQL das ist glaub ich unbestritten ;-) Der bedeutendste Kritikpunkt an MySQL sind ja die fehlenden Transaktionen... Ich meinte nur bzgl. der reinen Geschwindigkeit soll MySQL (viel) schneller sein, zumindest les ich das öfter (Vergleiche hab ich selber keine angestellt). Sicherlich sind da alle Optimierungs-, bzw. Skalierungsmöglichkeiten (wie verhält sich MySQL wohl auf Mehrprozessorsystem?) die Oracle sicher bietet ausser Acht gelassen, da gehts wohl wirklich nur um ne einfache PC-Kiste mit einem Prozessor - was ja wohl der häufigste Einsatzort von MySQL sein dürfte (und für ne Menge Pageviews ausreicht) ;-)

      Was mir bei Dir immer gefällt: Du kennst Dich (anscheinend ;-) ) ziemlich gut mit Oracle, SQL und dem ganzen Kram aus und hast es ja auch und benutzt trotzdem baseportal - irgendeinen Vorteil scheint baseportal denen ggü. dann doch zu besitzen und das freut mich natürlich ;-)))

     Antworten

    Beitrag von Olaf Mertgen (263 Beiträge) am Dienstag, 14.Mai.2002, 12:55. WWW: www.shareware4u.de
    Re: @sander & CB, Re: Optionsfeld - Doppeleinträge vermeiden

      Ich bin von baseportal auf jeden Fall begeistert, da es halt ziemlich einfach ist (auch für Laien), eine Webseite mit einer Datenbank zu hinterlegen.

      Bei einem Vergleich auf einfachen Rechnern hat MySQL sicherlich einen Vorsprung, denn Oracle benötigt für eine gute Entfaltung schon mal ordentlich Arbeitsspeicher, richtig Spaß macht Oracle so ab 1 GB RAM. Mit RAID und Multi-Prozessor geht's dann richtig ab. MySQL ist da halt viel einfacher gestrickt. Aber so hat jede Datenbank ihren eigenen Markt. Aber es schadet ja nicht, über den Rand zu schauen, was andere besser machen und zu versuchen, das ebenfalls anzubieten.

      Mit Oracle und SQL kenne ich mich deshalb aus, da ich in erster Linie Indivdual-Software für Windows (speziell Datenbank-Anwendungen mit Oracle und Interbase) entwickle. Aber eine Webseite mit Oracle im Hintergrund ist dann doch etwas schwieriger (glaub ich, man kann ja nicht alles wissen). Mit MySQL und PHP arbeite ich auch, da es den entscheidenen Vorteil hat (noch :-), dass es viel bekannter ist als baseportal und man eher Kunden findet.

      Es hat halt alles Vor- und Nachteile. Manche Dinge lassen sich mit SQL in meinen Augen eben noch besser und performanter darstellen als mit baseportal, aber das wird sich ja hoffentlich noch ändern :-)

      Einen entscheidenen Vorteil hat baseportal aber auf jeden Fall, den direkten Draht zum Entwickler, das lässt über manches hinwegsehen.

     Antworten

    Beitrag von Sander (8133 Beiträge) am Dienstag, 14.Mai.2002, 13:17.
    Re: @sander & CB, Re: Optionsfeld - Doppeleinträge vermeiden

      >> Was mir bei Dir immer gefällt: Du kennst Dich (anscheinend ;-) ) ziemlich gut mit Oracle, SQL und dem ganzen Kram aus und hast es ja auch und benutzt trotzdem baseportal - irgendeinen Vorteil scheint baseportal denen ggü. dann doch zu besitzen und das freut mich natürlich ;-)))
      

      jaja, der Preis ;-)))

     Antworten


     
 Liste der Einträge von 47401 bis 47551:Einklappen Zur Eingabe 
Neueste Einträge << 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | Neuere Einträge < Zur Eingabe  > Ältere Einträge | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >> Älteste Einträge


Zurück zur Homepage

© baseportal.de. Alle Rechte vorbehalten. Nutzungsbedingungen



powered in 0.06s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!