• [^] # Re: Et Derby alors ?

    Posté par . En réponse à la dépêche Sun Microsystems fait l'acquisition de MySQL. Évalué à 2.

    DISTINCT n'est pas un tri. Si la colonne est un index, COUNT DISTINCT va simplement compter le nombre de clés dans l'index, ce qui normalement est très rapide (avec MyISAM en tout cas - fais un EXPLAIN SELECT pour t'en convaincre).

    DISTINCT est un tri. Il ne retourne pas les enregistrements identiques, il les détecte et les exclus du résultat. Que ce soit rapide ne veut pas dire que c'est plus rapide que la consultation d'un compteur (un champ de type entier dans une table forums pour cet exemple). Faire une somme a également un coût. Que tu veuilles payer ce coût à chaque consultation d'un total, plutôt que quand il change, c'est Poussif By Design.
    Par ailleurs, il y a quelques chances que ton index possède une contrainte UNIQUE, auquel cas, l'utilisation de DISTINCT relève de la perversion.

    ses concurrents imposent d'utiliser un trigger pour mettre en cache la valeur en question

    Ses concurrents n'imposent pas de passer par un COUNT, cela ne veut pas dire qu'ils imposent de passer par un trigger.

    Tourner sept fois sa langue dans sa bouche avant d'intervenir me semble plus approprié dans ton cas.

    Dans ton cas, je me renseignerais sur ce que font les concurrents avant de proposer des solutions que, visiblement, tu peines à justifier.