10
votes

MySQL Count Row Performance

pour un STOCKAGE INNODB Il est préférable de compter le nombre total d'enregistrements par

  • Utilisation mysql_num_rows sur XXX

    ou par

    • récupérant la matrice et récupérez la valeur "totale" de XXX

      ?


0 commentaires

4 Réponses :


1
votes

Ce dernier est le plus susceptible de mieux fonctionner depuis que vous ne transmettez qu'un seul entier alors que, dans le premier scénario, vous envoyez une augmentation de plusieurs données.


3 commentaires

MySQL ne transmet pas réellement de données avant d'appeler mysql_fetch_array


Donc, dans ce cas, pourquoi n'est-ce pas le premier mieux?


MySQL aura toujours les résultats de la requête tamponnés d'une manière ou d'une autre jusqu'à ce que les données soient complètement récupérées.



13
votes

Absolument ce dernier. Il peut saisir la valeur directement à partir de l'indice de PK, tandis que le premier nécessite presque certainement une analyse de table (sauf si chaque colonne fait partie d'un index; et même alors, il doit saisir des valeurs de partout les index). Ensuite, en fonction de la façon dont vous vous connectez à la base de données, il existe une grande quantité de transit de données pour obtenir un compte.

expliquer peut aider ici. Dans ce cas, il vous dira que le SELECT est optimisé.


0 commentaires

4
votes

En plus de la réponse de ZXPRO, il existe également l'effort interne MySQL: xxx

force mysql pour récupérer physiquement les lignes de correspondance physiquement; alors que xxx

permet à MySQL de compter les entrées dans la clé primaire, sans récupérer aucune ligne de table


0 commentaires

1
votes

Si "PK" est la clé principale, il ne peut y avoir qu'un enregistrement, la réponse va donc être 0 ou 1, de sorte que vous n'avez pas vraiment besoin de les compter de toute façon.

mais oui, ce dernier.

InnoDB n'a pas seulement besoin de vérifier l'index, il doit également vérifier que la ou les lignées sont visibles pour la transaction en cours, à cause de MVCC. Mais c'est un détail. Il utilisera un index de couverture quand même (qui n'est pas pertinent si Pk est la clé primaire, comme cela est toujours groupé)


0 commentaires