php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 05.11.2008, 02:57  
Benutzer
 
Registriert seit: 16.05.2008
Beiträge: 60
superskunk befindet sich auf einem aufstrebenden Ast
Standard Performance der Datenbank erhöhen

Ich arbeite an einer Produktsuche. Die Artikeldatenbank umfasst derzeit etwa 185000 Produkte. Dadurch ist die Datenbank extrem langsam geworden.

Die Indizes wurden optimiert, aber das Ergebnis ist immer noch zu langsam. Welche Möglichkeiten gibt es, die Performance deutlich zu erhöhen?
superskunk ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 05.11.2008, 06:56  
Neuer Benutzer
 
Registriert seit: 23.07.2008
Beiträge: 10
MikeR befindet sich auf einem aufstrebenden Ast
MikeR eine Nachricht über ICQ schicken
Standard

Zeig mal auf welche Weise du suchst. MATCH AGAINST, LIKE, anders?
185.000 Einträge sind eigentlich nicht sonderlich viel. Hast du den Slow Query Log mal aktiviert? Hast du dir die langsamen Queries mal mit EXPLAIN angeschaut?
MikeR ist offline   Mit Zitat antworten
Alt 05.11.2008, 18:29  
Benutzer
 
Registriert seit: 16.05.2008
Beiträge: 60
superskunk befindet sich auf einem aufstrebenden Ast
Standard

Es ist durchaus möglich, daß die Abfragen ungünstig gewählt wurden. Ich bin noch ziemlich neu in Punkto php.

Ich habe 2 Abfragen. Die erste ermittelt die Anzahl der Datensätze. (für Blätterfunktion)
PHP-Code:
$abfrage_id "SELECT ID FROM artikel Where Titel Like '$suchwort%' OR Titel Like '%$suchwort%'"
Die zweite Abfrage gibt die Datensätze aus. Vielleicht kann man dies ja in einer Abfrage bewälltigen.
PHP-Code:
$abfrage "SELECT ID, Link, Titel, Beschreibung, Bild_URL, Preis FROM artikel Where Titel Like '$suchwort%' OR Titel Like '%$suchwort%' ORDER BY Preis ASC LIMIT ".$offset.", ".$anz_daten.""
superskunk ist offline   Mit Zitat antworten
Alt 05.11.2008, 18:46  
Benutzer
 
Registriert seit: 16.05.2008
Beiträge: 60
superskunk befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von MikeR Beitrag anzeigen
Hast du den Slow Query Log mal aktiviert? Hast du dir die langsamen Queries mal mit EXPLAIN angeschaut?
Das sagt mir im Moment leider gar nix. Könntest Du mir diesbezüglich Informationen senden?
superskunk ist offline   Mit Zitat antworten
Alt 05.11.2008, 19:34  
Neuer Benutzer
 
Registriert seit: 23.07.2008
Beiträge: 10
MikeR befindet sich auf einem aufstrebenden Ast
MikeR eine Nachricht über ICQ schicken
Standard

Dein Performance-Killer ist wohl LIKE '%$suchword%'
Sobald du eine Wildcard an den Beginn des Strings setzt, kann MySQL nicht auf einen Index zurückgreifen und muss die komplette Tabelle scannen. Das dauert natürlich ewig.
Eine Volltextsuche mit MATCH AGAINST ist wesentlich schneller, kann allerdings nur mit kompletten Worten umgehen und nicht mit Wortteilen.

Zu Slow Query Log und EXPLAIN:
MySQL :: MySQL 5.0 Reference Manual :: 5.2.4 The Slow Query Log
MySQL :: MySQL 5.0 Reference Manual :: 7.2.1 Optimizing Queries with EXPLAIN
MikeR ist offline   Mit Zitat antworten
Alt 05.11.2008, 20:46  
Benutzer
 
Registriert seit: 16.05.2008
Beiträge: 60
superskunk befindet sich auf einem aufstrebenden Ast
Standard

Ich werde heute Abend nochmal schauen ob ich etwas verbessern kann. Mir ist aufgefallen, daß ich bei der Abfrage ein array mit allen der Suche entsprechenden Links fülle & später das array mit einer Schleife ausgebe. Das ist doch eigentlich auch nicht sinnvoll, weil ich die Ausgabe doch gleich in MySql Abfrage erzeugen kann.

Danke für die Links. Mein Problem ist nur das ich die Sprachen nicht spreche. Ich konnte deutsch nicht finden.
superskunk ist offline   Mit Zitat antworten
Alt 05.11.2008, 20:54  
Neuer Benutzer
 
Registriert seit: 23.07.2008
Beiträge: 10
MikeR befindet sich auf einem aufstrebenden Ast
MikeR eine Nachricht über ICQ schicken
Standard

Handbuch auf Deutsch: MySQL :: MySQL 5.1 Referenzhandbuch
MikeR ist offline   Mit Zitat antworten
Alt 05.11.2008, 22:18  
Benutzer
 
Registriert seit: 16.05.2008
Beiträge: 60
superskunk befindet sich auf einem aufstrebenden Ast
Standard

Danke für Deine Hilfe. Ich habe meinen Code nun optimiert. Dabei habe ich festgestellt, daß ich in einem Script welches die Navigation erzeugt einen Denkfehler hatte & dies hat alles sehr langsam gemacht. Mit den ganzen Optimierungen läuft das jetzt alles super schnell. Es ist kein Vergleich zu vorher. Also wirklich Danke. Ich hatte da schon ewig herum gesucht & durch Dich den richtigen Anstoß bekommen. Das Handbuch schaue ich mir mal genauer an.
superskunk ist offline   Mit Zitat antworten
Alt 09.11.2008, 23:08  
Erfahrener Benutzer
 
Registriert seit: 09.11.2008
Beiträge: 200
smilla befindet sich auf einem aufstrebenden Ast
Standard

Ich würde das mit den Blättern lassen, die Ergebnisse auf z.B: 20 Einträge limitieren und dann einen eigenen Relevanzalgo schreiben. Dann brauchst auch keine Volltextsuche mehr. Ber normaler Suche Vorwahl treffen und dann selbst ranken. Damit bin ich bisher immer am besten gefahren.

Ich hatte aber früher bei ca. 300.000 Produkte auch mal eine Volltextsuche gehabt, wo ich ebenfalls eine Parsetime unter 1 Sekunde hatte.

smilla
smilla ist offline   Mit Zitat antworten
Alt 09.11.2008, 23:17  
Benutzer
 
Registriert seit: 16.05.2008
Beiträge: 60
superskunk befindet sich auf einem aufstrebenden Ast
Standard

Es geht wie gesagt ziemlich schnell bei mir und ich habe die Abfrage "%$suchwort%" noch drin. Man könnte das also selbst anhand der Abfrage alles noch schneller machen.

Nach was willst Du selbst ranken?
superskunk ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
datenbank auf andere kopieren geht nicht! Kevin Datenbanken 1 18.08.2007 23:20
String in Datenbank finden Pimbolie1979 Datenbanken 11 13.10.2006 15:37
Komplexe Funktion: +Übersichtlichkeit, -Performance Jacks Rache PHP Tipps 2006 3 07.06.2006 14:22
Klappmenü aus Datenbank PHP Tipps 2007 1 12.12.2005 15:02
Mehrere Anwendungen eine Datenbank... Datenbanken 5 15.08.2005 11:22
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:33
[Erledigt] mysql datenbank anlegen...aber WIE??? PHP Tipps 2005-2 0 05.08.2005 19:33
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:32
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:31
[Erledigt] mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:31
[Erledigt] mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:29
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:29
Bilder aus der Datenbank Skazi Datenbanken 2 09.02.2005 13:42
Integer in Datenbank erhöhen ohne neuladen der Seite PHP Tipps 2005 5 20.01.2005 06:20
[Erledigt] MySQL findet Datenbank nicht Datenbanken 10 21.10.2004 09:14

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql performance verbessern, mysql performance erhöhen, datenbank performance verbessern, datenbank performance steigern, php performance verbessern, db performance verbessern, datenbank performance erhöhen, php mysql performance verbessern, performance von datenbanken verbessern, mysql datenbank performance verbessern, mysql performance optimieren, performance mysql steigern, mysql durchsatz erhöhen, mysql leistung verbessern, performance verbessern mysql, performance erhöhen mysql, php geschwindigkeit erhöhen, mysql performance steigern, php mysql performance erhöhen, performace von mysql datenbanken verbessern

Alle Zeitangaben in WEZ +2. Es ist jetzt 03:13 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum