2012-03-27 4 views
1

Ich versuche, die folgende Abfrage von phpMyAdmin (auf einem lokalen WAMP-Server) ausgeführt wird:phpMyAdmin hängt, während bekannte gute Abfrage ausgeführt (lokaler WAMP-Server)

SELECT table2.AreaName, table2.Dialcode 
FROM table2 
LEFT JOIN 
master 
ON  master.Dialcode = table2.Dialcode 
WHERE master.Dialcode IS NULL 

ich zum ersten Mal versuchte, auf zwei Tabellen mit 4 Einträgen in jedem und ich habe ein Ergebnis.

Jetzt versuche ich (die gleiche Abfrage) an meinen "echten" Tabellen mit jeweils rund 20000 Einträgen und klicke auf GO. Während 5-6 Sekunden habe ich „Loading3 in der Mitte erscheinen, aber dann nichts passieren, kein Ergebnis, alles loading ...

Jede Idee

EDIT:

SHOW INDEXES FROM MASTER

Tabelle Non_unique den Wert Key_name Seq_in_index Column_name Collation Kardinalität Sub_part Null index_type Packed

Master 1 Vorwahl 1 Vorwahl A 18731 NULL NULL JA BTREE

Und das gleiche für die Tabelle2. Ich habe bereits Indizes der Tabellen auf DialCode erstellt, indem ich auf die Schaltfläche INDEX in PhpMyadmin klicke.

LÖSUNG: Eigentlich funktioniert die Abfrage schnell, das ist die Behandlung, die ich brauche, danach braucht es Zeit.

+1

Wird die Anfrage Timeout? Ich würde vorschlagen, [Workbench] (http://www.mysql.com/downloads/workbench/) zu verwenden, um lokal statt phpMyAdmin zu arbeiten. – nnichols

+0

Eigentlich bekomme ich keine Zeitüberschreitung, aber dann kann ich nicht in die Menüs navigieren, die Seite wird ständig geladen. Ich muss den MySQL-Dienst neu starten. Ich werde Workbench ausprobieren und Sie wissen lassen – remyremy

+0

Haben Sie nachgesehen, ob es hilfreiche Einträge im Fehlerprotokoll gibt? Gibt es etwas Unerwartetes, wenn Sie sich aktuelle Prozesse ansehen? Übermäßiger Speicher oder CPU-Auslastung? – nnichols

Antwort

1

Ich habe gerade ein sehr einfaches Modell Ihres Szenarios erstellt und es in 0.03s mit 1M Datensätze in Tabelle2 und 70K Datensätze in Master zurückgegeben. Wahrscheinlich müssen Sie den Feldern für den Join Indizes hinzufügen -

ALTER TABLE `table2` 
    ADD INDEX `IX_table2_dialcode`(`Dialcode`); 

ALTER TABLE `master` 
    ADD INDEX `IX_master_dialcode`(`Dialcode`); 
0

Ihre "echte" Tabelle enthält etwa 20000 Einträge. Dies führt dazu, dass phpmyadmin beim Ausführen von SQL "hängt".

Um dies zu verhindern, begrenzen Sie Ihre Ergebnismenge. d. h., fügen Sie einfach limit 0,5 an die SQL an, die Sie versucht haben. Dadurch werden nur die ersten 5 Zeilen der Ergebnismenge abgerufen.

Verwandte Themen