Database Interrogazione - Meglio per contare il numero di righe o meglio mantenere un contatore di incremento?

StackOverflow https://stackoverflow.com/questions/4812975

  •  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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top