我有三个表约5K行,每行加速MySQL查询
USERSid, email
FLASH2TIMBRESid, 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
你能后的表声明,请在id_user列索引。您可能应该拥有GROUP BY子句中SELECT的所有非聚合列。 – Kickstart 2013-02-19 09:16:56
不应该在“ORDER BY DESC”中指定一列吗? – silkfire 2013-02-19 09:17:07
是的,他应该在那里指定一个专栏。这是否意味着这个人从未执行过这个查询并测量了速度?那么他怎么可以要求改进呢? – Elisabeth 2013-02-19 09:21:26