2011-02-03 91 views
4
SELECT vt.vtid, vt.tag, vt.typeid, vt.id, vt.count, tt.type, u.username, vt.date_added, tc.context, tc.contextid 
FROM (vt, tt, u) 
LEFT JOIN tc ON (vt.vtid = tc.vtid AND tc.userid = vt.userid) 
WHERE vt.typeid = tt.typeid 
AND vt.verified =0 
AND vt.userid = u.userid 
ORDER BY vt.date_added DESC 
LIMIT 1 

需要.0007s完成慢速查詢需要.0007s?爲什麼這是在我的slowlog?

id select_type  table type possible_keys   key    key_len   ref       rows   Extra 
1 SIMPLE   vt  ref  typeid,userid,verified verified  1    const      9    Using where; Using filesort 
1 SIMPLE   tt  eq_ref PRIMARY     PRIMARY   4    vt.typeid  1 
1 SIMPLE   tc  ref  vtid     vtid   4    vt.vtid   3  
1 SIMPLE   u  eq_ref PRIMARY     PRIMARY   4    vt.userid  1    Using where 

我怎樣才能改變這種在慢查詢日誌顯示不出來?

+3

我猜測剖析器的性能標準非常高。 – BoltClock 2011-02-03 00:20:00

回答

5

只是一個猜測。您可能會設置log-queries-not-using-indexes標誌。根據文檔,即使使用索引,也可能會導致查詢以緩慢的日誌記錄。

0

我很確定a1ex07是正確的。

但是,如果您想稍微加快查詢速度,您可以將tc上的索引從vtid上的索引更改爲(vtid,userid)上的索引。如果你加入兩個鍵,那麼複合鍵的速度會快得多,而且如果你只是加入第一個字段,那麼鍵速度會快得多。

相關問題