2012-11-02 10 views
5

Ich habe ein Problem mit einfachen Update-Abfrage, was immer in meiner MySQL-slow-query.log-Tabelle erscheint nicht groß ist und nur nur 3021 rows enthalten.einfache UPDATE-Abfrage in MySQL dauert eine lange Zeit

die Abfrage wie folgt aussieht:

UPDATE 'address' 
SET 'user' = 1013 
WHERE 'id_adress' = '1' 
    AND 'date' = '2012-06-04' 

Query_time: 2,664413 Lock_time: 0,000043 Rows_sent: 0 Rows_examined: 1

wenn ich examinate diese Abfrage mit:

select 'user' = 1013 
from 'address' 
where 'id_adress' = '1' 
    AND 'date' = '2012-06-04' 

sieht dann sehr schnell aus 1 row in set (0.00 sec)

Warum dauert diese einfache Aktualisierungsabfrage so viel Zeit? Wie es zu beheben?

+0

Haben Sie irgendwelche Indizes auf dem Tisch eingerichtet? Indizes können die Aktualisierungsgeschwindigkeit bei Abfragen negativ beeinflussen, obwohl sie SELECT-Abfragen beschleunigen. – Ren

+0

@Ren gibt es keine Indizes für diese Tabelle, nur 1 Primärschlüssel für ID. – stefek143

+0

Da diese Abfragen wenig sinnvoll sind, weil alles in einem einzigen Anführungszeichen steht, gehe ich davon aus, dass Sie sie tatsächlich mit einer bestimmten Client-Sprache generieren, und dies ist der SQL-Code, den * think * tatsächlich ausführt. Mein Ratschlag ist, zu überprüfen: 1) Was der generierte SQL-Code ist 2) Wie diese SQL ausführt, wenn sie außerhalb ausgeführt wird (v.g. von Ihrem bevorzugten MySQL-Client). –

Antwort

1

zuerst überprüfen, ob Ihre Tabelle nicht abgestürzt ist,
wenn es dann ist, reparieren Sie Ihre Tabelle.

zweiten Versuch, diese beiden Felder zu indizieren, die in Where-Klausel verwendet werden