Se la colonna è indicizzata, COUNT(DISTINCT id)
deve solo restituire il numero di elementi nell'indice per la colonna. COUNT(id)
deve sommare il numero di righe a cui punta ogni voce dell'indice o eseguire la scansione di tutte le righe.
Per la tua seconda domanda, vedi count(*) e count(column_name), qual è la differenza?
. Il più delle volte, COUNT(*)
è più appropriato; ci sono alcune situazioni, come il conteggio delle righe unite con un outer join, in cui è necessario utilizzare COUNT(columnname)
perché non vuoi contare le righe nulle.