Was ist schneller: MySQL LEFT (*, 100) oder PHP substr ()?

8

Ich erstelle eine einfache Liste der letzten 10 aktualisierten Seiten aus der Datenbank. Jeder Datensatz, den ich anzeigen muss: Name und verkürzte / abgeschnittene Beschreibung, die als TEXT gespeichert wird. Bei einigen Seiten kann die Beschreibung mehr als 10.000 Zeichen umfassen.

Was ist besser für Geschwindigkeit und Leistung? Oder ein besserer Weg? Ich benutze sowohl Zend als auch Smarty.

MySQL

%Vor%

PHP

%Vor%     
John Magnolia 30.08.2011, 18:47
quelle

4 Antworten

14

Da Ihre Frage speziell "schneller" und nicht "besser" war, kann ich mit Sicherheit sagen, dass die Berechnung in der DB tatsächlich schneller ist. "Besser" ist eine viel andere Frage, und je nach Anwendungsfall könnte @ Graydots Vorschlag in einigen Fällen besser sein.

Die Vorstellung, dass der Anwendungsserver Daten marshalieren muss, wenn dies nicht erforderlich ist, widerspricht der Idee der Spezialisierung. Datenbanken sind spezialisiert auf das Abrufen von Daten und die Durchführung massiver Datenberechnungen. das machen sie am besten. Anwendungsserver sollen den Fluss zwischen Persistenz, Geschäftslogik und Benutzerschnittstelle koordinieren.

Würden Sie sum () in einer SQL-Anweisung verwenden oder würden Sie alle Werte auf Ihrem App-Server abrufen, dann eine Schleife erstellen und sie addieren? ABSOLUT, die Durchführung der Summe in der DB ist schneller ... Denken Sie daran, der Anwendungsserver ist eigentlich ein Client für die Datenbank. Wenn Sie all diese Daten zum Zweck der Verarbeitung an den Anwendungsserver zurückholen, senden Sie Datenbytes über das Netzwerk (oder sogar nur über RAM-Segmente hinweg), die nicht verschoben werden müssen ... und das alles über Datenbanktreiber fließt es gibt viele kleine Code-Dinger, die die Daten berühren und verschieben.

ABER gibt es auch die Frage nach "Besser", was problemspezifisch ist ... Wenn Sie Anforderungen haben, die Daten auf Zeilenebene zu benötigen oder clientseitig zu filtern und neu zu summieren (oder den Benutzer angeben zu lassen, wie viele linke Zeichen sie haben) möchte in der Ergebnismenge sehen), dann könnte es sinnvoll sein, es auf dem App-Server zu tun, so dass Sie nicht immer wieder in die Datenbank gehen müssen.

Sie haben spezifisch "schneller" gefragt und die Antwort ist "Datenbank" - aber "insgesamt schneller" könnte etwas anderes bedeuten und "insgesamt besser" ganz etwas anderes. Wie immer ist die Wahrheit verschwommen und die Antwort auf fast alles ist "Es kommt darauf an"

hth Jon

    
Jon Briccetti 30.08.2011, 19:06
quelle
5

LINKS in der Datenbank.

  • Es werden weniger Daten an den Client gesendet (in diesem Fall weniger als 1k gegenüber 100k Text)
  • Es ist trivial verglichen mit dem eigentlichen Tabellenzugriff, ORDER BY usw.

Es bricht auch keine Regeln wie "Format im Client": es ist einfach gesunder Menschenverstand

Edit: Sieht so aus, als hätten wir einen Glaubenskrieg.

Wenn die Frage nach komplexen String-Manipulationen oder Formatierungen oder nicht-aggregierten Berechnungen gefragt wird, würde ich sagen, benutze PHP. Dies ist keiner dieser Fälle.

Eine Sache, die Sie nicht optimieren können, ist das Netzwerk im Vergleich zum db + Client-Code.

    
gbn 30.08.2011 18:51
quelle
3

Ich stimme mit gbn überein, aber wenn Sie das Suffix ... integrieren möchten, können Sie versuchen:

%Vor%

Dabei steht 25 für die Anzahl der Zeichen, die der Vorschautext haben soll. (Beachten Sie, dass dies nicht in ganze Wörter aufgeteilt wird, aber Ihre PHP-Funktion funktioniert auch nicht).

    
Brad Christie 30.08.2011 18:56
quelle
2

Mein POV (was falsch sein kann!) ist, dass PHP benutzt wird, um das Zeug vom Server zu analysieren, es an die Datenbank zu senden und es dann dem Client zu präsentieren. Ich bevorzuge es, gespeicherte Prozeduren in der Datenbank zu verwenden - weil es einfach ist zu wissen, welche Abfragen ausgeführt werden und um sicherzustellen, dass die Geschäftslogik eingehalten wird.

Ich denke nur, dass diese klaren Linien eine gute Idee sind.

Vergessen zu erwähnen - Die Datenbank weiß mehr über die Struktur und Art der Daten als ein PHP-Skript.

    
Ed Heal 30.08.2011 19:05
quelle

Tags und Links