Re: @CB: Abfrage beschleunigen - 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 Mittwoch, 16.Januar.2002, 17:28. WWW: www.shareware4u.de
    Re: @CB: Abfrage beschleunigen

      Das stimmt zwar, ist sogar erheblich schneller ohne sort, aber die Sortierung ist leider falsch rum.

      Beispiel (Geaendert = Datumsfeld):
      get "Geaendert>-13 range=$start,30", "programme";
      
      Das ist zwar schneller, aber die Datensätze sind nun aufsteigend sortiert
      get "Geaendert>-13 sort=-Geaendert range=$start,30", "programme";
      Ich brauche aber das hier, d.h. die neuesten Einträge zuerst. Es würde natürlich auch reichen, wenn ich die Ergebnis-Menge mit einer Schleife rückwärts durchlaufen könnte, aber da wüsste ich nicht wie. Zudem vermute ich mal, dass die Schleife länger bräuchte, wenn ich mich in beiden Richtungen bewegen könnte. Zumindest ist das bei anderen Datenmengen so.


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von Olaf Mertgen (263 Beiträge) am Dienstag, 15.Januar.2002, 22:25. WWW: www.shareware4u.de
    @CB: Abfrage beschleunigen

      Hallo Christoph,

      ist es eigentlich möglich, mittels get nur bestimmte Felder zu holen.

      Wenn ich eine Tabelle mit vielen Feldern habe, brauche ich bei einigen Abfragen aber nur ganz wenige. Bei SQL könnte ich mir jetzt nur die benötigten Felder holen und dadurch die Abfrage erheblich beschleunigen. Geht sowas auch mit bp?

      Gruß, Olaf

     Antworten

    Beitrag von Jürgen (614 Beiträge) am Dienstag, 15.Januar.2002, 22:52.
    Re: @CB: Abfrage beschleunigen

      wie sieht denn dein get bis jetzt aus?

      so etwa ...

      get "Id==*";
       
      while(get_next)
      

      {

      if($Feld eq $xyz)
      {
      
      ...


      oder hast du deine wenigen Felder die du Abfragen möchtest auch auf Sortierung gesetzt und kannst die Abfrage dann so machen, was dann auch effektiver wäre...

      get "Feld==$xyz";
      

      while(get_next)

      {
      
      ...
      }
       
      Gruß Jürgen

     Antworten

    Beitrag von Olaf Mertgen (263 Beiträge) am Dienstag, 15.Januar.2002, 23:47. WWW: www.shareware4u.de
    Re: @CB: Abfrage beschleunigen

      Hallo Jürgen,

      danke für die Hilfe, aber die Abfrage ist ansonsten schon vollkommen optimiert, im Hinblick auf die zu holenden Datensätze, Range und Sortierung.

      Es geht nicht darum, nur bestimmte Datensätze zu erhalten, sondern von den bestimmten Datensätzen auch nur noch bestimmte Felder. Dadurch wird zumindest bei SQL die zu holende Menge (Volumen) geringer und die Abfrage dadurch schneller.

      Gruß, Olaf

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Mittwoch, 16.Januar.2002, 14:08.
    Re: @CB: Abfrage beschleunigen

      Nein, das geht nicht, ist aber auch -so wie die Daten bei bp organisiert sind- egal. Alle Felder in einem Rutsch zu holen ist sogar schneller, als extra einzelne Felder rauszuextrahieren...

      Das _Holen_ der Daten geht fix, wichtiger is die Abfrage - viele Verknüpfungen kosten Zeit (und sort)! Also sowas wie "Name>b & Alter<5 | Alter>10 & Farbe=Rot | Typ=b sort=Name,Vorname,Alter" - am Besten sind Abfragen der Art: "Name==* range=0,10".

      Hier kann man auch ne Menge machen, wenn man sich im Vorfeld überlegt, wie man die Daten organisiert, d.h. schon beim Reinschreiben an die Situation beim Auslesen denkt - Beispiel ist dieses Forum hier - es gibt nur ein einziges Feld das die richtige Reihenfolge beim Auslesen angibt - dafür hat man beim Reinschreiben ein bisschen mehr Aufwand (s. Bib). Da das Verhältnis Lesen/Schreiben aber mind. 1:20 ist, lohnt sich das locker...

      Die Frage is auch obs an den DB-Abfragen liegt, oder vielleicht an anderem Code in Deinem Template (Schleifen etc.) - hier solltest Du erstmal mit "runtime" austesten wo die "Hotspots" liegen - nur die lohnt es sich zu optimieren...

      Ansonsten hängt vieles vom Einzelfall ab ;-)

      Und bei Dir ist es sowieso so, dass die Seiten schon recht schnell sind, Du hast einfach zuviele Abrufe ;-)

     Antworten

    Beitrag von Olaf Mertgen (263 Beiträge) am Mittwoch, 16.Januar.2002, 16:11. WWW: www.shareware4u.de
    Re: @CB: Abfrage beschleunigen

      thx :-)

      OK, dass sort am längsten dauert ist klar. Gibt es den eine Möglichkeit, den Primärschlüssel selbst zu bestimmen? Im Moment liegt der Primärschlüssel ja auch Id, die mich aber nicht interessiert. Wenn ich den nun selbst festlegen könnte, dann könnte ich die Abfrage ohne sort machen und die Sortierung muss nur bei einer Datenänderung aufgebaut werden.

      Gruß, Olaf

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Mittwoch, 16.Januar.2002, 16:48.
    Re: @CB: Abfrage beschleunigen

      Es gibt keine Primärschlüssel (unnötiges Zeugs ;-) ), alle Indexe/Schlüssel sind gleichwertig. "Id" wird nur als Defaultwert genommen, wenn nix anderes angegeben wird, weil "Id" immer existieren muss (ach ja und weils Sinn macht ;-) )...

      Insofern versteh ich Dein Anliegen nicht - beschreib mal ein bisschen mehr, was Du machen willst und was Du machst (wie sieht denn der Aufruf nu aus? Schreib doch mal hier rein ;-) )

     Antworten

    Beitrag von Olaf Mertgen (263 Beiträge) am Mittwoch, 16.Januar.2002, 17:50. WWW: www.shareware4u.de
    Re: @CB: Abfrage beschleunigen

      Ok, das hatte ich anders verstanden.

      Ich hab hier aber mal ein Horror-Beispiel. Die Abfrage soll alle Einträge einer bestimmte Kategorie holen. Pro Eintrag sind drei Kategorien möglich. Das Ergebnis soll die neuesten Einträge zuerst liefern.

      get "Kategorie==$s|Kategorie2==$s|Kategorie3==$s sort=-Geaendert,Programmname range=$start,10", "programme";
      

      das braucht ca. 0,2 sec

      Lasse ich dagegen sort weg:
      get "Kategorie==$s|Kategorie2==$s|Kategorie3==$s range=$start,10", "programme";
      

      dann braucht es nur noch ca. 0,02 sec, also nur noch 10%

      Hast du eine Idee, wie ich trotzdem die Sortierung nach dem umgekehrten Aktualisierungsdatum hinbekomme?

     Antworten

    Beitrag von Olaf Mertgen (263 Beiträge) am Mittwoch, 16.Januar.2002, 18:05. WWW: www.shareware4u.de
    Re: @CB: Abfrage beschleunigen

      Jaja Herr Mertgen, wer lesen kann ist klar im Vorteil. Ich hab grad nochmal die Doku studiert.

      get "Kategorie==$s|Kategorie2==$s|Kategorie3==$s&Gaendert==* sort=- range=$start,10", "programme";
      

      Damit bekomme ich die umgekehrte Sortierung und das ziemlich schnell.

      Allerdings fehlt mir dann die Sortierung nach Programmname. Dazu hab ich in der Doku dann leider nichts mehr gefunden.

      Gibt es dafür auch noch eine Möglichkeit? Aber darauf könnte ich zur Not verzichten.

     Antworten

    Beitrag von Olaf Mertgen (263 Beiträge) am Mittwoch, 16.Januar.2002, 18:10. WWW: www.shareware4u.de
    Re: @CB: Abfrage beschleunigen

      Stopp, alles zurück.

      Das funktioniert so leider doch nicht, die Sortierung ist ziemlich chaotisch.

      Ich hatte es hiermit probiert:
      get "Geaendert>-13 sort=- range=$start,30", "programme";
      

      Und damit funktioniert es prima, aber das beschränkt sich scheinbar auf den Fall, dass ich nur die eine Bedingung habe.

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Donnerstag, 17.Januar.2002, 00:26.
    Re: @CB: Abfrage beschleunigen

      Ja, das ist es... Ja, geht nur mit einer Bedingung... Für 2 und mehr brauchts dann eben "sort"... Nun, man kann nicht alles haben (zumindest nicht immer) ;-)

     Antworten

    Beitrag von Olaf Mertgen (263 Beiträge) am Mittwoch, 16.Januar.2002, 16:27. WWW: www.shareware4u.de
    Re: @CB: Abfrage beschleunigen

      Wie sieht es denn aus, wenn ich statt, nach 2 Feldern nur noch nach einem Feld sortieren lasse, macht das nochmal viel aus?

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Mittwoch, 16.Januar.2002, 16:49.
    Re: @CB: Abfrage beschleunigen

      Müsste n Tick schneller sein... Am Besten aber ganz aufs sort verzichten und die Abfrage gleich nach dem richtigen Feld machen (also "Name>c" sortiert ja automatisch nach Name)

     Antworten

    Beitrag von Olaf Mertgen (263 Beiträge) am Mittwoch, 16.Januar.2002, 17:28. WWW: www.shareware4u.de
    Re: @CB: Abfrage beschleunigen

      Das stimmt zwar, ist sogar erheblich schneller ohne sort, aber die Sortierung ist leider falsch rum.

      Beispiel (Geaendert = Datumsfeld):
      get "Geaendert>-13 range=$start,30", "programme";
      
      Das ist zwar schneller, aber die Datensätze sind nun aufsteigend sortiert
      get "Geaendert>-13 sort=-Geaendert range=$start,30", "programme";
      Ich brauche aber das hier, d.h. die neuesten Einträge zuerst. Es würde natürlich auch reichen, wenn ich die Ergebnis-Menge mit einer Schleife rückwärts durchlaufen könnte, aber da wüsste ich nicht wie. Zudem vermute ich mal, dass die Schleife länger bräuchte, wenn ich mich in beiden Richtungen bewegen könnte. Zumindest ist das bei anderen Datenmengen so.

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Donnerstag, 17.Januar.2002, 00:10.
    Re: @CB: Abfrage beschleunigen

      Liegt das nicht auf der Hand? ;-)

      get "Geaendert>-13 sort=- range=$start,30", "programme";
      

      ein "sort=-" dreht die Dinge um (sollte sehr schnell sein, da ja nicht wirklich sortiert wird)... Probiers mal aus ;-)

     Antworten


     
 Liste der Einträge von 51601 bis 51751: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!