MySQL Performance

  • Themenstarter Themenstarter joky_joky
  • Beginndatum Beginndatum
J

joky_joky

Tach zusammen mein Frage bezieht sich heute auf die Geschwindigkeit eine DB
wenn ich ein Script sehr häufig ausführe und anstatt

PHP:
SELECT * FROM $tabelle WHERE Feld1 = '$var1' and Feld2 = '$var2'

SELECT Feld1, Feld2, Feld3 FROM $tabelle WHERE Feld1 = '$var1' and Feld2 = '$var2'

ist diese Abfrage dann schonender für die DB oder gleicht sich das aus habe dazu jetzt schon viele Themen gelesen und ich weis nicht genau was ich jetzt glauben soll.

Und ach ja kann mir vielleicht jemand sagen wieviele Abfragen ein DB in einer Stunde schaffen kann wenn das System ein P IV mit 2,8 GHz und 1024 MB Speicher ist oder wie kann man das vorher einschätzen oder berechnen?
 
Schonender klingt so, als würden sich bei falscher Bedienung Verschleißmerkmale aufweisen.

Um auf die Frage zu kommen: Es ist immer besser, die Felder einzeln anzugeben. Denn einerseits weiß man genau, welche Daten abgefragt werden, und andererseits werden auch nur ausschließlich die angegebenen Felder abgefragt.
 
hmm ok habe aber gehört das sich mit eine Abfrage die sich nur auf die Felder bezieht die ich brauche der Overhead deutlich erhöt und bei der anderen Abfragemöglichkeit halt eben nicht.
 
Im Einzelfall hilft sicher nur ein direkter Performancevergleich mit einem Testskript.
Im Allgemeinen halte ich die Variante mit expliziter Auswahl der Felder für schneller, vor allem, wenn nicht alle Felder aus der Tabelle benötigt werden.
Übersichtlicher finde ich sie ohnehin, da man nicht erst in die DB schauen muss, welche Felder man überhaupt erhält, wenn man mal wieder an den Code ran muss.

Gruß hpvw
 
Hallo,
die Anfrage mit direkt Auswahl ist schneller, da bei dieser wirklich nur die Feler geladen werden müssen die benötigt werden.

Nimm einfach:
SELECT feld1, feld2 FROM tabelle where feld1 = 1 and feld2 = 2
(reihenfolge bei select genauso wie beim where-statment)

und dann setz noch einen zweispaltigen index auf das feld1 und feld2
(aber auch in dieser Reihenfolge)

... und dann ist deine Query nicht zu schlagen! :)

Für solche Sachen ist es immer gut explain zu nutzen (einfach vor die Query setzen)

gruß daniel
 
Zurück