加速mysql查询

时间:2013-02-19 09:14:44

标签: mysql performance

我有三张桌子,每张约有5k行

USERS id, email

FLASH2TIMBRES id, id_user, photo_name, valid

投票 id, id_user, id_photo

我使用此查询使我的网站运行速度非常慢。

SELECT  users.email, 
        flash2timbres.id, 
        flash2timbres.id_user, 
        flash2timbres.photo_name, 
        flash2timbres.time, 
        COUNT(votes.id ) AS nbvotes 
FROM    users, flash2timbres 
        LEFT JOIN votes 
            ON flash2timbres.id = votes.id_photo 
WHERE   valid = 1 AND 
        flash2timbres.id_user = users.id 
GROUP    BY flash2timbres.id 
ORDER BY `flash2timbres`.`id` DESC 
LIMIT 0, 30

有人可以帮我改进吗?

编辑:索引是:

users.id PRIMARY (Type BTREE) Unique  
flash2timbres.id PRIMARY (Type BTREE) Unique  
votes.id PRIMARY (Type BTREE) Unique

2 个答案:

答案 0 :(得分:0)

如果您还没有,则应该查看对表格建立索引:http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html。如果不对索引字段执行连接,则连接速度非常慢,尤其是当数据集增长时。

添加索引后,在查询之前添加EXPLAIN并运行它。结果将确认查询现在正在使用新索引(在key列中)。

答案 1 :(得分:0)

在投票表上以及flash2timbres表上的id_user列上添加id_photo上的索引