Wir habe gerade auf einer Schulung ein ähnliches Thema behandelt. Ich kann dir nicht 100% sagen ob es für MySQL gültig ist aber so sieht es bei ORCL Datenbanken aus.

Du musst unterscheiden, ob du die selects über einen full table scan machst oder index basiert ziehst. Bei funktionsbasierten selects (functionbased querys) greifen allerdings die von dir zuvor für die Tabellen angelegten index nicht und es wird jedes mal ein full table scan gemacht. Solltest du innerhalb der selects irgendwelche Datenbankfunktionen wie sum,min,max,avg oder irgendwas der gleichen verwenden, dann könnte hier ein ansatzpunkt liegen. (Wie gesagt, alles erstmal aus ORCL Sicht, ob es bei MYSQL, ähnlich ist ???? )

Die Datenbank ist in den seltensten Fällen der Flaschenhals. Oft sind es die Disks mit I/O und auch die Programmierung der selects (leider viel zu oft mit - full table scans) sind je nach Tabellengröße und Ergebnismenge selten gut.

Ich muss aber Peter recht geben, dass du vielleicht dein Design prüfen solltest.

Mario
aka schroedi

PeterDickten wrote:
Hallo,

das Verhalten hängt von vielen Faktoren ab, Geschwindigkeit, Anbindung der Datenbank, Umfang der Ergebnismenge etc. Im Allgemeinen sollte man das Resultset möglichst klein halten, da der Datentransport über das Netzwerk eher ein Bremse darstellt als die Abfrage der Daten selbst. Die Datenbank selbst kann besser Abfragen optimieren und Daten cachen als Du das mit erträglichem Aufwand lokal hinkriegst. Zudem ist das Holen und Speichern "auf Verdacht" ein Antipattern, da Du so schnell unnötg Konflikte erzeugen kannst (Lokale Daten vs. zwischenzeitlich geänderte Daten)

Daher: Sieh Dir die Anfragen an, die Du über ActiveRecord auf der Datenbank erzeugst (AR-Logging einschalten!) und versuche die Ergebnismenge möglicht klein zu halten und laß die Datenbank die Arbeit machen für die sie optimiert ist (Filtern, Suchen, Joins). Wenn das Ganze zu langsam ist, dann beschäftige Dich mit den Themen Fremdschlüssel und Indizes. Prüfe ob die von AR erzeugten Abfragen entsprechend optimal sind ...

Es gibt wirklich selten Fälle bei denen eine richtig eingesetzte Datenbank ein echter Flaschenhals ist.

Viele Grüße & Erfolg,
Peter


Am 02.09.2008 um 21:28 schrieb Holger Hänisch:

Hallo!

Also ich hab mir gedacht: biste klug und baust deine Seitenlangen
Datenbankabfragen(SQL QUERRYS) um. Anstatt zigmal das selbe aus der
Datenbank abzufragen habe ich mir dann alle Datensätze auf einmal in ein
Array geholt z. B. : ( @project = Project.find(:all) ) um dann im Array
@project meine Suchabfragen zu machen.

Nun habe ich aber nicht den Eindruck, dass das schneller geht. Ganz im
Gegenteil.

Wie sind denn da eure Erfahrungen?

Gruß Ortwin
--
Posted via http://www.ruby-forum.com/.
_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug

_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug


--

Mario Schröder | http://www.poppster.de
Phone: +49 34464 62301 Cell: +49 163 27 09 807
PGP-Key: follows

_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug

Antwort per Email an