brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 14-07-2006, 13:35
Davidt
 Newbie
Links : Onlinestatus : Davidt ist offline
Registriert seit: Oct 2003
Ort: Berlin
Beiträge: 21
Davidt ist zur Zeit noch ein unbeschriebenes Blatt
Davidt eine Nachricht über ICQ schicken
Standard Datenbankabfragen

Hallo,

wo finde ich Tutorials um Datenbankabfragen zu beschleunigen? Wenn ich mehere 100 User gleichzeitig auf meiner Seite habe, dann wird der Server ziemlich langsam, manchmal stürzt er auch ab.

Nun bin ich auf der Suche nach passenden Tutorials, die mir dabei behilflich sind, dies in Zukunft zu verhindern.

Wer kann mir bitte dabei weiterhelfen?


Viele Grüsse
Davidt
Mit Zitat antworten
  #2 (permalink)  
Alt 14-07-2006, 16:00
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: Datenbankabfragen

EXPLAIN <Query>

z.B.
EXPLAIN SELECT * FROM tabelle WHERE name = "ghostgambler"

Gibt dir dann Infos aus, wie die Infos auszuwerten sind findet sich in der MySQL-Manual
Mit Zitat antworten
  #3 (permalink)  
Alt 14-07-2006, 16:20
prego
 PHP Senior
Links : Onlinestatus : prego ist offline
Registriert seit: May 2005
Ort: Hey ropp, hinne riwwer unn wirrer zuricke!
Beiträge: 1.602
prego ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ausserdem solltest du dich über grundliegendes Datenbanklayout und Joins informieren. Richtige Indizierung der Tabelle macht auch Sinn.

Du solltest daran arbeiten die Anzahl deiner Queries zu minimieren. Ausserdem kann es Sinn machen ins "Slow-Query-Log" des Servers zu schauen.

Wenn du eine Datenbankklasse hast, oder eine zentrale Funktion wo du deine Queries ausführst ist es sehr leicht die Zeit und die Anzahl der Queries zu messen und damit die "bösen Jungs" aufzuspüren.
__________________
so long, der-p | 72dpi-club

Microsoft IE-Manager Dean Hachamovitch bei der Vorführung des IE7 Beta Preview 2 am 20.3.2006:
"Wir hatten mit IE ganz offensichtlich was verschlafen."
Mit Zitat antworten
  #4 (permalink)  
Alt 14-07-2006, 16:31
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von prego
Joins
Aber ich hoffe mal um sie nicht zu benutzen? oo,
Joins können zwar einfacher sein, können manchmal auch besser sein als sich etwas mit php zusammenzuschustern, in den meisten Fällen sind sie aber total overdone und können viel besser durch separate Queries gemeistert werden ^^,
Mit Zitat antworten
  #5 (permalink)  
Alt 14-07-2006, 17:03
ministry
 PHP Junior
Links : Onlinestatus : ministry ist offline
Registriert seit: Jun 2006
Ort: KI / KA
Beiträge: 965
ministry ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von ghostgambler
Aber ich hoffe mal um sie nicht zu benutzen? oo,
Joins können zwar einfacher sein, können manchmal auch besser sein als sich etwas mit php zusammenzuschustern, in den meisten Fällen sind sie aber total overdone und können viel besser durch separate Queries gemeistert werden ^^,
Das interessiert mich nun mal. Nehmen wir mal eben irgendein Beispiel, z.b. ein Mini-Forum. (Nur für die Struktur.)

Dann habe ich eine Tabelle user mit usern, also mit id | nick. Lass es 1000 User sein.

Dann habe ich eine Tabelle entries mit Einträgen, sagen wir 5000 Stück.
Mit entry_id | user_id | datum | text.

Jetzt will ich, eigentlich egal was, sagen wir, die Beiträge mit usernamen von monat x ausgeben.

Also irgendwie sowas (JOIN-Lösung):
PHP-Code:
SELECT datumtextnick FROM entries
 LEFT JOIN user ON entry
.user_id user.id WHERE monat(datum) = 
Wie soll das sein mit separaten Queries? Erstmal alle Beiträge aus dem Monat x, daraus ein Array, dann eine Query nach dem nick für alle user die im Array stehen, und dann zusammensetzen? Das ist wirklich performanter?

Wahrscheinlich hat mein Beispiel verfehlt was du meintest, dann kannst du mir ja vielleicht ein anderes geben.

Bitte erklärs mir
Mit Zitat antworten
  #6 (permalink)  
Alt 14-07-2006, 17:31
Slava
 PHP Senior
Links : Onlinestatus : Slava ist offline
Registriert seit: Nov 2002
Ort: Köln->Karlsruhe
Beiträge: 1.583
Slava befindet sich auf einem aufstrebenden Ast
Standard

ich finde das auch spannend!
in jedem Fall glaube ich nicht, dass in dem Beispiel von
@ministry etwas ausser Join in frage kommt.

Aber es gibt vielleicht ein paar spetiele Fälle, die bei Verzicht auf joins vorteile bringen.
welche?(keine ahnung)
__________________
Slava
bituniverse.com

Geändert von Slava (14-07-2006 um 17:35 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 14-07-2006, 17:48
prego
 PHP Senior
Links : Onlinestatus : prego ist offline
Registriert seit: May 2005
Ort: Hey ropp, hinne riwwer unn wirrer zuricke!
Beiträge: 1.602
prego ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Manche Sachen kann man tatsächlich ohne Joins besser lösen.

Hatte letztens was um die Freunde 2ten Grades zu selecten. Es machte keinen Sinn die Relationstabelle 3mal zu joinen (Geschwindigkeit) - es war einfacher 2 Queries zu machen.


Im angeführten Beispiel mit dem Forum würde ich aber auf jeden Fall nen Join machen - 1 Query im vergleich zu "Einträge Monat x+1" Queries.
__________________
so long, der-p | 72dpi-club

Microsoft IE-Manager Dean Hachamovitch bei der Vorführung des IE7 Beta Preview 2 am 20.3.2006:
"Wir hatten mit IE ganz offensichtlich was verschlafen."
Mit Zitat antworten
  #8 (permalink)  
Alt 14-07-2006, 20:59
ministry
 PHP Junior
Links : Onlinestatus : ministry ist offline
Registriert seit: Jun 2006
Ort: KI / KA
Beiträge: 965
ministry ist zur Zeit noch ein unbeschriebenes Blatt
Standard

... dann bin ich ja beruhigt und kann meine zahlreichen und unheimlich praktischen Join-Queries alle so lassen

Dass es Sonderfälle gibt, in denen das zu kompliziert (bzw. damit zu langsam) wird, ist schon klar.... mir war nur so, als hätte ich was von "den meisten Fällen" und "total overdone" gehört... komisch.

btw:
Zitat:
... 1 Query im vergleich zu "Einträge Monat x+1" Queries.
Alternativ hätte man auch das erste array zu einem riesigen WHERE implodieren können, und hätte so nur zwei Queries - aber viel praktischer wird es damit auch nicht.

Gruß,
ministry
Mit Zitat antworten
  #9 (permalink)  
Alt 14-07-2006, 21:28
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.621
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von prego
Hatte letztens was um die Freunde 2ten Grades zu selecten. Es machte keinen Sinn die Relationstabelle 3mal zu joinen (Geschwindigkeit) - es war einfacher 2 Queries zu machen.
das ist schon mal ein sehr gutes beispiel. und ähnliche problematiken gibt es auch genügend.

ein monster-JOIN über keine ahnung wie viele tabellen ist langsamer als 1-2 oder 3 einzel-abfragen.

aber auch monster-JOINs können schnell sein, wenn man seine DB korrekt und vernünftig designt. es soll leute geben, bei denen eine monster query über eine din-a4 seite recht flott ist. ( ich nenne keine namen )
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #10 (permalink)  
Alt 14-07-2006, 23:31
prego
 PHP Senior
Links : Onlinestatus : prego ist offline
Registriert seit: May 2005
Ort: Hey ropp, hinne riwwer unn wirrer zuricke!
Beiträge: 1.602
prego ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@Abraxas: Thats what I'm talking about
__________________
so long, der-p | 72dpi-club

Microsoft IE-Manager Dean Hachamovitch bei der Vorführung des IE7 Beta Preview 2 am 20.3.2006:
"Wir hatten mit IE ganz offensichtlich was verschlafen."
Mit Zitat antworten
  #11 (permalink)  
Alt 14-07-2006, 23:32
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.621
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

OffTopic:
bitte mit x am ende.


das sollte auch nur eine zustimmung sein.
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

MariaDB 5.5 veröffentlicht
MariaDB 5.5 veröffentlichtDie freie MySQL-Alternative MariaDB wurde in der stabilen Version 5.5.23 veröffentlicht und soll einige Verbesserungen gegenüber Oracles Communityversion von MySQL mitbringen.

16.04.2012 | Berni

Deutsche Yii Framework Community
Deutsche Yii Framework CommunitySeit dem 19.03.2012 gibt es für die Yii PHP Framework Community ein deutsches Zuhause.

20.03.2012 | dhcomputer

 

Aktuelle PHP Scripte

EM 2012 Tipp-Spiel ansehen EM 2012 Tipp-Spiel

Online Tipp-Spiel zur Fussball Europameisterschaft 2012, basierend auf php-Script mit hinterlegter mySql-Datenbank

27.05.2012 tippimnetz | Kategorie: PHP/ Spiele
Advanced Login ansehen Advanced Login

Login-System und Kundenverwaltung, die sich spielend leicht in bestehende Webseiten einbauen lässt und einen enormen Funktionsumfang bietet. Ihre eigene Webseite muss mit Advanced Login nicht umständlich an ein fertiges System angepasst werden.

25.05.2012 Madden | Kategorie: PHP/ Kundenverwaltung
BROM CMS/BelCal 3 ansehen BROM CMS/BelCal 3

Spezielles CMS für Betreiber von Ferienwohnungen. Komplette Seitenerstellung online, Verwaltung mehrerer Objekte, Reservierungssystem mit sofortigem Abgleich im Belegungskalender und vieles mehr bietet dieses Content Management System.

25.05.2012 belcal2 | Kategorie: PHP/ CMS
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:06 Uhr.