我有以下代码,并且在表tblfollowers
中只有几个follower_id
或username
时加载正常。
但是一旦进入数千人,它的载入真的很慢。
有没有更好的方法来写这个?SQL缓慢加载时间
我在它加入的字段上添加了索引,这似乎没有什么区别。
$scheduler->render_table("events
LEFT JOIN tblfollowers ON events.id_user = tblfollowers.username
WHERE events.status ='active'
AND((tblfollowers.follower_id)='$test') OR ((events.id_user) ='$test')
GROUP BY events.event_id, events.event_name, events.user_name, events.id_user, events.time, events.details, events.location, events.dresscode
ORDER BY events.timestamp DESC"
,"event_id","start_date, start_date,event_name,details");
$scheduler->render_sql("SELECT event_id, start_date, end_date, event_name, details
FROM events ");
下面是这个查询的解释:
1 SIMPLE events ALL NULL NULL NULL NULL 1593 Using where; Using temporary; Using filesort 1 SIMPLE tblfollowers ref PRIMARY PRIMARY 4 dbhappps.events.id_user 17 Using where; Using index
下面是表
块引用
表活动:
event_id int(11) Primary Unique Index
event_name varchar(400)
user_name varchar(155)
id_user int(11) Primary Unique Index
start_date datetime
end_date datetime
details varchar(700)
location varchar(255)
dresscode varchar(255)
timestamp timestamp on update CURRENT_TIMESTAMP
块引用
tblfollowers:
username int(11) primary
follower_id int(11) primary
timestamp timestamp on update CURRENT_TIMESTAMP
如何加快这个查询呢?
你能更好地解释你的表模式。具体来说,提供有关您的索引的信息 –
@MikeBrant表中没有索引。有一次,我在id_user和event_id上有一个索引,但正如你在下面看到的那样,答案是索引会减慢上传时间。如果你看看我做的最底部,并在查询中进行EXPLAIN SELECT,那么你可以看到那个结果 – Steven
没有你的索引,你正在做全表扫描。是索引会增加加载时间,但这是你付出的代价。另请看“(tblfollowers.follower_id)='$ test')或((events.id_user)='$ test')”。将id_user检查移到where子句可能不是更好吗? – crafter