Salve ragazzi, possiedo un sito da 100.000 visitatori giornalieri.
Il sito é costruito custom, senza alcun CMS.
Ho un DB in MySql che contiene quasi 100.000 post e quasi 1.000.000 di commenti degli utenti sparsi in questi post.
Va da se che in una home, ad esempio, io debba mostrare il Titolo del post e sicuramente quanti commenti ha quel singolo post. Ho indicizzato tutti gli indici, non ho nemmeno un filesort ma con il passare del tempo la Query di elenco post che annida una select count(*) all'interno comincia a rallentare di millisecondi che vanno pian piano a lockarmi le table per le visite successive.
la mia query più o meno é così:
Funziona ma sta iniziando a rallentare. Cosa consigliate? Io pensavo di andarmi a fare una colonna in post chiamata direttamente num_commenti e andare ad aggiornarla col +1 ogni commento che viene inserito però ho qualche dubbio a riguardo... Ad esempio cosa succede se due in contemporanea scrivono? O se cancello un commento? Devo andare a fare -1 col rischio di inceppare un meccanismo automatico...Codice PHP:
SELECT post.title,
(SELECT COUNT(*) FROM comments WHERE comments.post_id = post.id) as num_commenti
FROM post
ORDER BY post.timestamp DESC
Grazie mille