我有以下代碼,並且在表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