-2

我有三个表,每个表大约有 5k 行

用户 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
4

2 回答 2

0

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

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

于 2013-02-19T09:21:39.737 回答
0

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

于 2013-02-19T10:37:40.363 回答