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