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.
淡淡烟草味
淡淡烟草味 2017-06-30 09:52:51
0
1
1296

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 ?

淡淡烟草味
淡淡烟草味

répondre à tous(1)
滿天的星座
  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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal