Ich habe Abfrage unter:MySQL-Abfrage nimmt zu viel Zeit
SELECT t.t_id
, t.usr_idx
, t.t_is_for
, t.tg_ids
, t.created_time
, t.allow_reply
, u.usr_name
, u.usr_avatar
, u.show_profile
, IF(u.usr_timeline != '',CONCAT('https://s3.amazonaws.com/tuurnts3thumbnail/',u.usr_timeline),'') as usr_timeline
, u.node_userid
, t.t_time
FROM tuu_tuurnt t
JOIN tuu_user u
ON t.usr_idx = u.usr_idx
AND u.usr_state = 1
LEFT
JOIN tuu_post p
ON t.t_id = p.t_id
AND p.usr_idx = 44756
LEFT
JOIN tuu_friend f
ON f.frd_my_idx = 44756
AND f.frd_your_idx = t.usr_idx
LEFT
JOIN tuu_friend fl
ON fl.frd_your_idx = 44756
AND fl.frd_my_idx = t.usr_idx
WHERE t.status = 0
AND NOT EXISTS (SELECT b.tuu_b_by_usr_idx
FROM tuu_blocked as b
WHERE b.tuu_b_usr_idx = 44756
AND t.usr_idx = b.tuu_b_by_usr_idx
)
GROUP
BY t.t_id
ORDER
BY t.t_time DESC
, t.t_id DESC
LIMIT 0,30;
Es dauert fast 7-8 zweites Ergebnis zu geben, aber wenn ich um durch t.t_time entfernen und t.t_id dann läuft es innerhalb 1 sek max.
Gibt es etwas, was ich falsch mache?
Machen Sie sich etwas Mühe, Ihre Anfrage zu formatieren. –
Wenn keine Aggregationsfunktionen vorhanden sind, ist die Aufnahme einer GROUP BY-Klausel im Allgemeinen ein sicheres Zeichen, dass Sie keine Ahnung haben, was Sie tun. Was machst du? Um zu antworten, sehen Sie http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very- simple-sql-query – Strawberry
Bitte fügen Sie 'EXPLAIN' zu Ihrer Frage hinzu. Es zeigt den Index an, den MySQL tatsächlich für die ORDER BY-Klausel verwendet hat. – Alexander