2012-11-02 340 views
5

我有一個簡單的更新查詢問題總是出現在我的mysql-slow-query.log表中並不大,只包含3021 rows在MySQL中簡單的更新查詢需要很長時間

查詢看起來像:

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

當我examinate此查詢有:

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

然後看起來非常快1 row in set (0.00 sec)

爲什麼這個簡單的更新查詢花費了這麼多時間? 如何解決它?

+0

您是否在表上設置了任何索引?索引可能會影響查詢的更新性能速度,即使它們加速了「SELECT」查詢。 – Ren

+0

@Ren在這張表上沒有索引,ID上只有1個主鍵。 – stefek143

+0

由於這些查詢沒有什麼意義,因爲有單引號的所有內容,我假設您實際上是使用某種客戶端語言生成它們的,並且這是SQL代碼*它認爲它實際上正在運行。我的建議是仔細檢查:1)生成的SQL代碼是什麼2)SQL在外面跑步時的表現(例如,來自您最喜歡的MySQL客戶端)。 –

回答

1

首先檢查您的表是否沒有崩潰,
如果它然後修復您的表。

第二次嘗試索引where子句中使用的那兩個字段