Quelle est la complexité de cette requête MySQL est le nombre de nombres d'entrées dans une table stockée quelque part et mis à jour chaque fois qu'une ligne est insérée ou supprimée? Si tel est le cas, la complexité devrait être O (1). P> P>
3 Réponses :
Cela dépend du moteur de stockage. P>
SELECT compte (*) à partir de votre carte code> est une opération O (1). Il suffit de lire cette valeur. LI>
- Pour Innodb, le nombre total de lignes n'est pas stocké, une analyse complète est donc requise. Ceci est une opération O (n). LI>
ul>
du manuel : p>
innodb code> ne conserve pas un nombre interne de lignes dans une table. (En pratique, cela serait quelque peu compliqué en raison de la version multi-versionnage.) Pour traiter un Compte (*) de T code> Déclaration, innoDB code> doit numériser un index du tableau , qui prend un certain temps si l'index n'est pas entièrement dans la piscine tampon. Si votre table ne change pas souvent, l'utilisation du cache de requête MySQL est une bonne solution. Pour obtenir un compte rapide, vous devez utiliser une table de comptoir que vous créez vous-même et laisser votre application le mettre à jour en fonction des inserts et la supprime. Afficher l'état de la table Code> a > peut également être utilisé si un nombre de lignes approximatives est suffisant. Voir la section 13.2.13.1, " innoDB code> Conseils de syntonisation de la performance ". P>
blockQuote>
J'ai une question. Si par complexité, nous voulons dire que le nombre de lectures de disque sera-t-il toujours O (n) code> pour analyser l'index de la table? Cela ne dépend pas du type d'index?
AFAIK dans Myisam Rows-Count est mis en cache, à Innodb non, et à chaque compte - tout ce qu'il compte toutes les lignes. P>
Je ne sais pas si cette valeur est stockée ou non, mais ce n'est pas important pour votre requête. Utilisation de MySQL avec votre requête, il comptera toutes les lignes retournées au moment où vous l'exécutez. P>
Important ou non, c'est sa décision, n'est-ce pas? Cela semble une question parfaitement valide pour moi.
Il est très important de connaître la complexité des fonctions, en particulier pour éviter de longues requêtes une performance plus intelligente lorsque vous avez une grande quantité de données.
Il semble que cela devrait être
O (n) code> au moment où vous cliquez sur unoù code> déclaration, faites donc attention à évaluer cela.