php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 19-09-2007, 19:31
SKB
 Newbie
Links : Onlinestatus : SKB ist offline
Registriert seit: Apr 2004
Beiträge: 17
SKB ist zur Zeit noch ein unbeschriebenes Blatt
SKB eine Nachricht über ICQ schicken SKB eine Nachricht über AIM schicken
Standard Abfrage in MySQL dauert ewig

Hallo zusammen,
ich habe nun auf nem P4 einen Apache und die neue MySQL aufgesetzt.

Ich habe darauf nun einer Art "Quiz-Beabrietungsseite" laufen, wo man auch doppelte Fragen finden/löschen kann. Soweit vorab.

Diese Doubletten-Suche hatte ich mir vorgestellt, dass er den ersten Datensatz nimmt und dann die DB mit like '%%$Frage%%' nach ähnlichen Fragen durchsucht. Funktioniert auch.

Die Datenbank hat aber inzwischen fast 28.000 Fragen und nun dauert eine Suche nach 100 (als Maxwert/Seite) Doubletten in 28.000 ungefähr eine halbe Minute und die Prozessorlast hängt dabei auf 100%. Jemand ne Idee?

Hier mal ein Teil aus dem Code:

PHP-Code:
$res = @mysql_query("select * FROM $table ORDER BY Frage DESC LIMIT $now, $ppp");
      while (
$reihe mysql_fetch_array($resMYSQL_ASSOC))
      {        
        
$result mysql_query("SELECT * FROM $table WHERE Frage like '%%$reihe[Frage]%%' AND id!='$reihe[ID]' AND Antwort!='reihe[Antwort]'");
        while (
$row mysql_fetch_array($resultMYSQL_ASSOC)) {
// ab hier wird dann eine Tabelle gefüllt, wenn Doubletten vorhanden sind. 
Danke für Eure Hilfe und einen schönen Abend

Gruß,
SKB
__________________
... wer nicht mit der Zeit geht, geht mit der Zeit ...
Mit Zitat antworten
  #2 (permalink)  
Alt 19-09-2007, 20:37
Lennie
 PHP Senior
Links : Onlinestatus : Lennie ist offline
Registriert seit: May 2006
Beiträge: 1.013
Lennie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

die lange dauer und belastung liegt eben an der enormen datenmenge... wie wäre es die suche dynamisch nach anzahl der datensätze zu splitten?
Mit Zitat antworten
  #3 (permalink)  
Alt 19-09-2007, 20:41
SKB
 Newbie
Links : Onlinestatus : SKB ist offline
Registriert seit: Apr 2004
Beiträge: 17
SKB ist zur Zeit noch ein unbeschriebenes Blatt
SKB eine Nachricht über ICQ schicken SKB eine Nachricht über AIM schicken
Standard

Naja, splitten wäre keine sogute Möglichkeit, denn ich will ja wissen, ob in allen Datensätze Ähnlichkeiten bzw Doubletten vorhanden sind. Kann man denn eigentlich in MySQL einstellen, dass er von selbst die Abfrage etwas langsamer machen soll, so, dass ich dann auch mit ner anderen Anwendung ohne Probs auf den Server zugreifen kann?

Gruß,
SKB
__________________
... wer nicht mit der Zeit geht, geht mit der Zeit ...
Mit Zitat antworten
  #4 (permalink)  
Alt 19-09-2007, 20:44
tontechniker
 PHP Senior
Links : Onlinestatus : tontechniker ist offline
Registriert seit: Jul 2005
Beiträge: 1.972
tontechniker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zuerst bitte richtiges Trennen von Strings (und Arrayindizes) lesen.

Um die Datenbank zu optimieren könntest du Indizes Anlegen, noch sinnvoller wäre es allerdings die Datenbankstruktur vernünftig zu normalisieren, dass heißt eine neue Tabelle anzulegen in der die Fragen stehen und dazu eine Tabelle mit den Antworten und der Id der Frage - so kannst du schnell sehen zu welcher Frage es mehrere Antworten gibt. Außerdem ist es nicht unbedingt sinnvoll für alle Fragen eine extra Abfrage durchzuführen.
Zitat:
wie wäre es die suche dynamisch nach anzahl der datensätze zu splitten?
Er begrenzt die Suche doch schon auf 100 Datensätze. 28000 Querys die jeweils 28000 Datensätze mit LIKE durchsuchen würde noch einiges länger dauern.
__________________
Die Regeln | rtfm | register_globals | strings | SQL-Injections | []
Mit Zitat antworten
  #5 (permalink)  
Alt 19-09-2007, 21:00
Slava
 PHP Senior
Links : Onlinestatus : Slava ist offline
Registriert seit: Nov 2002
Ort: Köln->Karlsruhe
Beiträge: 1.589
Slava befindet sich auf einem aufstrebenden Ast
Standard

SELECT a.*, b.* FROM $table as a inner join $table as b on b.id< >a.id AND b.Frage like concat('%',a.Frage,'%')
__________________
Slava
bituniverse.com
Mit Zitat antworten
  #6 (permalink)  
Alt 19-09-2007, 21:15
SKB
 Newbie
Links : Onlinestatus : SKB ist offline
Registriert seit: Apr 2004
Beiträge: 17
SKB ist zur Zeit noch ein unbeschriebenes Blatt
SKB eine Nachricht über ICQ schicken SKB eine Nachricht über AIM schicken
Standard

@ Slava.

Ich denke mal, ich ersetze meine SELECT Anweisungen einfach mit deinen?
__________________
... wer nicht mit der Zeit geht, geht mit der Zeit ...
Mit Zitat antworten
  #7 (permalink)  
Alt 19-09-2007, 21:26
tontechniker
 PHP Senior
Links : Onlinestatus : tontechniker ist offline
Registriert seit: Jul 2005
Beiträge: 1.972
tontechniker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Ich denke mal, ich ersetze meine SELECT Anweisungen einfach mit deinen?
Nein. Du denkst nach, merkst das Slava eine Query über zwei Tabellen geschrieben hat, ließt nochmal meinen Beitrag und überlegst du wie du die Vorschläge sinnvoll umsetzen kannst statt einfach etwas zu kopieren.
__________________
Die Regeln | rtfm | register_globals | strings | SQL-Injections | []
Mit Zitat antworten
  #8 (permalink)  
Alt 19-09-2007, 21:48
Slava
 PHP Senior
Links : Onlinestatus : Slava ist offline
Registriert seit: Nov 2002
Ort: Köln->Karlsruhe
Beiträge: 1.589
Slava befindet sich auf einem aufstrebenden Ast
Standard

auch eine optimierte query kann nichts bringen, wenn die tabelle für ein query nicht optimiert ist.
ich weis genau, dass du richtige Indexen machen muss, und zwar bei allen feldern die in ON, WHERE und ORDER BY stehen. Ohne kleinigkeiten zu wissen, kann ich nicht direkt sagen, ob dein feld 'Frage' als einfache oder full text Index gemacht werden muss.
bei full text Index muss natürlcih die abfrage anderes angepasst werden.
Also kann ich in moment nur empfehlen (wie tontechniker schon gesagt hat) sich mit Indexen zu beschäftigen.
__________________
Slava
bituniverse.com
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

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:54 Uhr.