6
votes

Quel algorithme utilise MySQL pour rechercher une ligne dans la table?

Si nous donnons une requête:

select name from employee where id=23102 and sir_name="raj";


0 commentaires

3 Réponses :


1
votes

index sont stockés sous forme B-arbres dans mysql, index sur les types de données spatiales utilisent r-arbres , les tables de mémoire supportent également index de hachage .


0 commentaires

0
votes

Vous pouvez utiliser Expliquer et Procédure Analyser Pour savoir comment votre requête est exécutée par MySQL.

Si vous voulez savoir quel type d'algorithme utilise en interne pour trouver l'ensemble résultant. Je vous suggérerais de lire comment DBMS travail.


0 commentaires

10
votes

En supposant que vous avez indexé le champ ID et qu'il est unique.
L'algorithme est un Recherche binaire (il y a des optimisations et des améliorations, mais ci-dessous est la théorie générale derrière elle ).

permet de dire que vous avez la liste de numéros commandée suivante:
1 45,87 111 405 568,620 945 1100 5000 5102 5238 5349 5520

Dites que vous souhaitez rechercher le numéro 5000, il y a deux manières.

  1. Numérisation de la liste complète, auquel cas vous devrez vérifier 10 chiffres (comptez du début jusqu'à atteindre 5000).
  2. binaire -> Voici les étapes: 2a. Aller au milieu numéro (620), puisque 5000 est plus grand, alors que->
    2b. Vous faites la même chose sur les numéros 945-5520, la médiane est 5102 depuis 5000 est plus petite que ...

    2c. Allez à la médiane de la partie 945-5102, qui est 1100 puisqu'il est inférieur, puis 5000 vont la partie entre 1100 et 5102 de
    2D. Trouvé ça!

    C'était à 4 opérations contre 10, la complexité de recherche binaire augmentera donc au même taux que la numérisation complète lorsque les données de recherche binaires augmentent de manière exponentielle


1 commentaires

merci beaucoup pour votre temps :) c'était une belle explication :) :)