我有一個MySQL查詢去如下幫助優化查詢爲MySQL
SELECT
count(`clicks`.`user_id`) as total,
`users`.`fullname`
FROM
`users`,
`clicks`,
WHERE
`users`.`id` = `clicks`.`user_id`
GROUP BY
`clicks`.`user_id`
ORDER BY
`total` desc
LIMIT
0,20;
我在幾個按鈕,按類型遊戲運行統計數據。它有一個用戶表和一個點擊表。它記錄特定用戶的點擊次數。用戶可以隨時點擊按鈕。一天二十次點擊,另外三十次,等等。他們並不全是連續的。
目前約2萬用戶約180k點擊。該查詢平均運行需要1.38秒。如果可以的話,我想加快速度。
爲什麼要在全名上添加索引?它不用於連接或訂單子句。 – Matt 2010-06-18 20:18:56
@Matt:因爲在SELECT子句中,如果索引存在,可以觸發使用。但是,MySQL只使用每個SELECT語句的一個索引(請參閱EXPLAIN輸出)... – 2010-06-18 20:21:58
'users.id'被定義爲'用戶'的主鍵。有一個單獨的「點擊」的「ID」列。這是MyISAM,不是INNODB。他們是'ints'。我無法在'clicks'上真的將索引添加到'user_id',但'fullname'上已經有索引。 – 2010-06-18 20:30:59