2012-04-05 6 views
0
create table foo (id int(11) auto_increment, value varchar(255)) 

Die Tabelle enthält grob 10,00,000 Zeilen und wählen Sie Operationen wie select id, den Wert von foo nehmen etwa 2-3 Sekunden verbessern auszuführen, wie verbessere ich die Geschwindigkeit hierWie die Ausführungsgeschwindigkeit auf einem Wählvorgang

+0

"ID auswählen, Wert von foo" ... ohne WHERE-Klausel? –

+0

no where-Klausel – Sam

+0

"Nun, da ist dein Problem!" - Adam Savage –

Antwort

2

select id, den Wert von foo wird die gesamte Tabelle zurück. Die 2-3 Sekunden, die Sie erwähnen, könnten die Zeit beinhalten, die Sie benötigen, um Ihre Ergebnisse zu übertragen. Dies kann oft viel länger dauern, als Sie den Datenbankserver zum Ausführen der eigentlichen Abfrage benötigen.

0

Fügen Sie den Feldern, die in der where-Klausel verwendet werden, einen Index hinzu.

1

Wenn es keine WHERE-Klausel (wie die von Ihnen gepostete Abfrage) gibt und Sie eine Million Zeilen auswählen, ist die Wahrscheinlichkeit groß, dass die Abfrage nicht dauert, sondern 2-3 Sekunden dauert die Daten über das Netzwerk.

Kann Ihre Anwendung tatsächlich eine Million Datensätze gleichzeitig verwenden? Wenn Sie diese Daten einem Benutzer zeigen, werden Sie wahrscheinlich einen Paging-Vorgang durchführen. Ändern Sie daher Ihre Abfrage, um Daten in überschaubaren Blöcken auszuwählen.

SELECT id, value 
FROM foo 
LIMIT $offset, $pgsize -- these two values will come from your application 

Wenn Sie wirklich alle diese Zeilen auf einmal brauchen, dann schlage ich vor, dass Sie sie zwischenspeichern.

Verwandte Themen