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
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
Antworten
Beitrag von Olaf Mertgen (263 Beiträge) am Mittwoch, 16.Januar.2002, 18:10. WWW: www.shareware4u.de
Re: @CB: Abfrage beschleunigen
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
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Donnerstag, 17.Januar.2002, 00:10.
Re: @CB: Abfrage beschleunigen
Antworten