j'ai une grande base de données de numéros que je suis à la recherche d'un match entre:entre les index manquants de déclaration dans certains cas
Par exemple:
1112203488
Ma table ressemble à ceci:
| Saton | eATON | info |
J'ai deux de l'indice sur SATON et EATON (nommés s et e)
Donc, mon SQL est la suivante:
SELECT *
FROM `data2`
FORCE INDEX (s, e)
WHERE 1112203488
BETWEEN `sATON`
AND `eATON`;
Donc, en général lorsque l'indice est utilisé, la requête prendra presque zéro le temps (0,02). Cependant, il semble parfois que les statistiques de table dans MySQL prennent la décision de faire une analyse complète de la table à la place, malgré le fait que je forcer l'utilisation des index dans le SQL. C'est un énorme succès en termes de performances car il prend la requête de 0,02 à 120 s.
Voici quelques exemples qui fonctionnent rapidement (en utilisant des index):
67372289
134744072
Et les lentes:
1112203488
1348203839
Si elle aide les index utilisent BTREE.
Combien de lignes sont les requêtes lentes de retour (et quel est le pourcentage de la table), vs le nombre de lignes (et en pourcentage) les rapides retournons? Les statistiques de la table sont-elles exactes et à jour? –
Les deux index ne peuvent pas être utilisés en même temps. L'un ou l'autre. –
@MikeChristensen Toutes les requêtes retourneront une, Les statistiques sont à jour. – Benjojo