Maison  >  Questions et réponses  >  le corps du texte

Optimisation mysql - Questions sur l'échec de l'index et le nombre de lignes analysées supérieur au nombre total de lignes de données lors d'une requête mysql.

La table de données utilise le moteur innodb et le champ update_at utilise un index normal.

Trois questions :

  1. En comparant les deux premières instructions, la deuxième instruction n'utilise pas d'index. Je me souviens que l'index sera abandonné lorsque le nombre de lignes analysées atteint un certain nombre. Quelle est la valeur critique ?

  2. L'analyse complète du tableau montre que le nombre de lignes analysées est de 70 341, mais que le nombre total de lignes de données n'est que de 57 087 ?

  3. select count(*) utilise un index, mais analyse également 70341 lignes. Cette instruction entraînera-t-elle des problèmes de performances ?

淡淡烟草味淡淡烟草味2668 Il y a quelques jours1246

répondre à tous(1)je répondrai

  • 滿天的星座

    滿天的星座2017-06-30 09:54:51

    1. Dans la base de données du mécanisme d'optimisation CBO, il n'y a pas de valeur critique claire pour l'utilisation ou la non-application des index. Le COÛT minimum dans le plan d'exécution est utilisé comme norme. La valeur empirique est qu'il est plus approprié d'utiliser des index lorsque. le nombre total de lignes du tableau est inférieur à 5 %.

    2. Je comprends que la deuxième déclaration utilise les données statistiques du tableau. Si le tableau a récemment subi des changements majeurs et que les données statistiques ont été mises à jour dans le temps, il y aura un écart important entre les deux.

    3. count(*) utilise un index, ce qui signifie que le champ update_at a la définition de NOT NULL Par rapport à une analyse complète de la table, le coût de l'analyse de l'index sera inférieur.

    répondre
    0
  • Annulerrépondre