Mysql
 sql >> Base de données >  >> RDS >> Mysql

B-Tree vs table de hachage

Vous ne pouvez accéder aux éléments que par leur clé primaire dans une table de hachage. C'est plus rapide qu'avec un algorithme d'arbre (O(1) au lieu de log(n) ), mais vous ne pouvez pas sélectionner de plages (tout ce qui se trouve entre x et y ).Les algorithmes d'arborescence le prennent en charge dans Log(n) tandis que les index de hachage peuvent entraîner une analyse complète de la table O(n) .De plus, la surcharge constante des index de hachage est généralement plus grande (ce qui n'est pas un facteur dans la notation thêta, mais il existe toujours ). De plus, les algorithmes d'arborescence sont généralement plus faciles à maintenir, à évoluer avec les données, à évoluer, etc.

Les index de hachage fonctionnent avec des tailles de hachage prédéfinies, vous vous retrouvez donc avec des "compartiments" dans lesquels les objets sont stockés. Ces objets sont à nouveau mis en boucle pour vraiment trouver le bon dans cette partition.

Donc, si vous avez de petites tailles, vous avez beaucoup de frais généraux pour les petits éléments, les grandes tailles entraînent une analyse plus poussée.

Les algorithmes des tables de hachage d'aujourd'hui évoluent généralement, mais la mise à l'échelle peut être inefficace.

Cependant, il peut y avoir un point où votre index dépasse une taille tolérable par rapport à vos tailles de hachage et votre index entier doit être reconstruit. Habituellement, ce n'est pas un problème, mais pour les bases de données gigantesques, cela peut prendre des jours.

Le compromis pour les algorithmes d'arbre est faible et ils conviennent à presque tous les cas d'utilisation et sont donc par défaut.

Cependant, si vous avez un cas d'utilisation très précis et que vous savez exactement quoi et seulement ce qui sera nécessaire, vous pouvez tirer parti des index de hachage.