Database Interrogazione - Meglio per contare il numero di righe o meglio mantenere un contatore di incremento?
-
25-10-2019 - |
Domanda
Se si dovesse Realizzazione di un'applicazione blog - quello che si preferisce -
Avere un contatore nel "post" tabella di memorizzare il numero di commenti
SELECT comment_count
FROM posts WHERE post_id = $id
... o contare il numero di commenti per un post particolare da una "COMMENTI" tabella:
SELECT COUNT(*)
FROM comments
WHERE post_id = $id
che uno è più ottimizzato?
Soluzione
Vorrei utilizzare la seconda forma, COUNT, fino a quando ero sicuro che le prestazioni in quel particolare query SQL è stato un problema. Quello che stai suggerendo nel primo è fondamentalmente denormalizzazione, che è bene e dandy, quando si sa per certo ne avete bisogno.
Indici permetterebbe di eseguire la seconda query abbastanza rapidamente a prescindere.
Altri suggerimenti
Diamo un'occhiata ai fattori.
Caso 1: Quando si visualizza il post che visualizzare i commenti. Ciò significa che tutti loro si recupera e può contare loro come li si visualizzano. In questo caso, no.
Caso 2: "15 commenti" Quando si visualizza il messaggio non si visualizzano i commenti, ma un link che dice In questo caso v'è un'equazione.
realizzarsi i count:
Costo di un commento salva = 1 Inserire + 1 Aggiornamento
Costo di uno schermo post = 1 Leggi
Media del numero di schermi blog = D
Media del numero di commenti = C
Quindi, per quello che il rapporto di display D vs Commenti C è vero che:
C * (Insert + Update) Dal momento che di solito è vero che D >> C, vorrei suggerire che il costo di tale aggiornamento in più svanisce. questo potrebbe non essere così importante per un blog, ma è una formula fondamentale per sapere quando si dispone di molti tavoli e necessità di prendere queste decisioni.