我有三张桌子,每张约有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
答案 0 :(得分:0)
如果您还没有,则应该查看对表格建立索引:http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html。如果不对索引字段执行连接,则连接速度非常慢,尤其是当数据集增长时。
添加索引后,在查询之前添加EXPLAIN并运行它。结果将确认查询现在正在使用新索引(在key
列中)。
答案 1 :(得分:0)
在投票表上以及flash2timbres表上的id_user列上添加id_photo上的索引