Ich benutze MySQL und ich habe eine Tabelle mit über 30 000 Zeilen, die ich später für eine Tabelle auf einer Seite verwenden möchte. Das Problem ist, dass die Abfrage dauert mehr als 1 Sekunde, und ich brauche es beschleunigen, da die Benutzer der Website nur ständig beschweren sich darüber.SQL Query nimmt viel zu lange
Hier ist die Abfrage:
SELECT `partners`.`id`,
`partners`.`first_name`,
`partners`.`url`,
`partners`.`country`,
`partners`.`city`,
`partners`.`followers` AS `amount_of_followers`,
`partner_user_brand`.`brand_id` AS `brand`,
MAX(posts.code_start) AS code_start,
MAX(posts.code_end) AS code_end,
`partners`.`platforms`,
( SELECT sales
FROM posts
WHERE partner_id = partners.id
ORDER BY posts.code_end DESC
LIMIT 1
) AS latest_sale,
`partners`.`email`,
`partners`.`gender`,
`partner_brand_status`.`status_id`,
`partners`.`school`,
( SELECT COALESCE(SUM(sales), 0)
FROM posts
WHERE partner_id = partners.id
) AS tsales,
COALESCE(MAX(posts.sales), 0) AS best_sale,
IF(partner_user_brand.brand_id=1, RIGHT(contacted, 10), RIGHT(nv_contacted, 10)) AS last_contact
FROM `partners`
LEFT JOIN `posts`
ON `partners`.`id` = `posts`.`partner_id`
INNER JOIN `partner_user_brand`
ON `partners`.`id` = `partner_user_brand`.`partner_id`
INNER JOIN `partner_brand_status`
ON `partners`.`id` = `partner_brand_status`.`partner_id`
AND `partner_user_brand`.`brand_id` = `partner_brand_status`.`brand_id`
GROUP BY `partners`.`id`,
`partner_user_brand`.`brand_id`
Gibt es eine Möglichkeit, es zu verkürzen oder es schneller zu machen?
Gibt es auch eine schnelle Möglichkeit, die Ergebnisse für die Abfrage zu zählen?
Machen Sie etwas Mühe, um die Abfrage in Ihrer Frage zu formatieren. –
@GordonLinoff Sorry, ich habe Stackoverflow kaum benutzt, um Fragen zu stellen. Werde versuchen. – Ryukish
In diesem Fall sollten Sie folgendes lesen: [ask] – Pred