Seite 1 von 1

$db->setRow() - queryAbfrage sparen?

Verfasst: Mo 5. Jan 2015, 15:25
von rethus
Ich habe momentan ein Plugin, in dem ich eine identische Query-Abfrage 2 mal hintereinander machen muss.
Klar kann ich jetzt einfach jeweils $db->query() aufrufen.

Frage ist an der Stelle, ob es ressourcen spart, wenn ich statt dessen mit $db->setRow(1); den Zeiger wieder auf das bereits vorhandene Abfrageergbnis zurücksetze.
Hat da jemand Erfahung ob dies wirklich eine Abfrage spart und ob es unerwünschte Seitenefekte haben kann, setRow zu nutzen... da in der API-Beschreibung ja nur die dürftige ANweisung steht: Do not set it manually unless you know what you are doing.

Re: $db->setRow() - queryAbfrage sparen?

Verfasst: Mo 5. Jan 2015, 17:31
von rethus
Naja, funktioniert nicht wirklich seh ich gerade.

Re: $db->setRow() - queryAbfrage sparen?

Verfasst: Mo 5. Jan 2015, 18:14
von Faar
MySQL hat meines Wissens einen Cache, der Abfragen eine Weile im Cache behält.
http://dev.mysql.com/doc/refman/5.1/en/query-cache.html
Also ein gut eingerichteter MySQL Server optimiert sich selbst ein Stück weit.

Ich habe auch bei wiederholten Abfragen von sehr langen Tabellen (>40 Mio) keine Einbußen bemerkt.
Auch (in PHP Schleifen) verschachtelte Abfragen sind nicht so schlimm, solange sich mit Sortierungen und WHERE Anweisungen zurückgehalten wird.
Letzteres kann die Datenbank bei langen Tabellen zur Auslagerung des Caches auf die Platte zwingen.
Und dann wirds :cry: