Andreas Korthaus: mysql_query() in php speicher?

Beitrag lesen

Hallo!

wo bewegt sich das LIMIT? wenn bspw. der offset 5678901 in dem ergebnis ist. ich hatte das ja schon mal in dem anderen post angesprochen.
dann muß mysql oder auch jede andere db-engine ja einen scope über alle zeilen haben und die offset zeilenmenge verwerfen. das wäre dann zwar innerhalb mysql und hat nichts mit php zu tun, ist aber trotzdem interessant.

Wie genau das bei MySQL implementiert ist, kann man wohl im Source nachlesen, das habe ich mir noch nie angesehen. Ein paar Sätze stehen dazu auch in der Doku: http://dev.mysql.com/doc/mysql/en/limit-optimization.html..., naja.

Jedenfall ist der Sinn von SQL ja unter anderem, die Komplexität eines performanten Zugriffs bzw. Filterung aus großen Datenmengen vor den Anwendern zu verstecken. Je nach Daten und Filterung ist nicht immer dieselbe Zugriffsmethode die schnellste. RDBMS sind halt darauf spezialisiert, einen möglichst effizienten Weg zu benutzen, die gewünschten Daten zu extrahieren. Das klappt nicht immer so wie gewünscht, daher schadet es sicher nicht zu wissen wie die eingesetzte Datenbank optimiert und wie man diese Optimierung ggfs. beeinflussen kann.

in bezug auf php würde die mit limit begrenzte zeilenzahl geliefert. das limit könnte ja bspw. von offset 123456 eine anzahl von 654321 sein. dann würde php ja schon mit query eine ganze menge an daten abholen, welche ja auch im speicher stehen müßten.

Ja. Das gibt (je nach Umfang der Daten) dann mit Sicherheit Probleme, meist mit dem memory_limit von PHP. Allerdings ist das - gerade im Web - ein Sonderfall, der nicht wirklich häufig vorkommt. MySQL ist für viele einfache Anwendungsfälle sicher eine gute Lösung, das trifft gerade auf Web-Anwendungen oft zu. Wenn das dann aber nicht reicht gibt es ja noch genügend andere Datenbanken, die bessere Ansätze für den speziellen Fall verfolgen. Bei MySQL könnte man sich mit einer explizit ungepufferten Query behelfen, wie Tom es verlinkt hat. In diesem Fall wird auch jeder Datensatz direkt geholt.

Grüße
Andreas

--
SELFHTML Feature Artikel: http://aktuell.de.selfhtml.org/artikel/