Mysql
 sql >> Base de données >  >> RDS >> Mysql

mysql compte les performances

jetez un œil aux articles de blog suivants :

1) COUNT(***) vs COUNT(col)
2) Conseils de performance faciles pour MySQL
3) Comptage rapide(*) pour InnoDB

btw, quel moteur utilisez-vous?

MODIFIÉ : À propos de la technique pour accélérer le comptage lorsque vous avez juste besoin de savoir s'il y a un certain nombre de lignes. Désolé, j'ai eu tort avec ma requête. Ainsi, lorsque vous avez juste besoin de savoir, s'il y a par ex. 300 lignes par condition spécifique, vous pouvez essayer la sous-requête :

select count(*) FROM
( select 1 FROM _table_ WHERE _conditions_ LIMIT 300 ) AS result

vous minimisez d'abord le jeu de résultats, puis comptez le résultat ; il analysera toujours le jeu de résultats, mais vous pouvez le limiter (une fois de plus, cela fonctionne lorsque la question à la base de données est "est ici plus ou moins de 300 lignes) et si la base de données contient plus de 300 lignes qui satisfont à la condition que la requête est plus rapide

Résultats des tests (mon tableau contient 6,7 millions de lignes) :

1) SELECT count(*) FROM _table_ WHERE START_DATE > '2011-02-01'
renvoie 4,2 millions pendant 65,4 secondes

2) SELECT count(*) FROM ( select 1 FROM _table_ WHERE START_DATE > '2011-02-01' LIMIT 100 ) AS result
renvoie 100 pendant 0,03 seconde

Vous trouverez ci-dessous le résultat de la requête d'explication pour voir ce qui s'y passe :

EXPLAIN SELECT count(*) FROM ( select 1 FROM _table_ WHERE START_DATE > '2011-02-01' LIMIT 100 ) AS result