I just started my website, and after 5 days it slowed down, it took nearly 30 seconds to load the website, because the mysql database got bigger with plus 50-60k rows.
I have searched hours for solution, but i did not find anything that i could implement to optimize my query.
$idstack = $_SESSION['ids'];
$stmt = $mysqli->prepare("SELECT
maps.id,
maps.name,
maps.date,
maps.mcversion,
maps.mapid,
maps.description,
maps.java,
maps.bedrock,
maps.schematic,
users.username,
users.rank,
users.verified,
(SELECT COUNT(*) FROM likes WHERE likes.mapid = maps.id) AS likes,
(SELECT COUNT(*) FROM downloads WHERE downloads.mapid = maps.id) AS downloads,
(SELECT COUNT(*) FROM views WHERE views.mapid = maps.id) AS views
FROM maps
INNER JOIN users
ON maps.userid = users.id
WHERE maps.id NOT IN ( '" . implode( "', '" , (array)$idstack ) . "' ) ORDER BY RAND() DESC LIMIT 15");
$stmt->execute();
$result = $stmt->get_result();
This query returns what i want, but it is slow when the database has thousands of rows. Any idea how could i optimize it?