2008-10-22 20 views
2

Supposons qu'une table de base de données possède une colonne "Nom" qui est définie comme clé pour la table. Les valeurs de nom habituelles seront "Bill", "Elizabeth", "Bob", "Alice". Les recherches sur la table seront également effectuées par la clé de nom.Les valeurs de clé dans une table de base de données doivent-elles être hachées?

Est-ce que le hachage des valeurs optimise les opérations de quelque façon que ce soit? c'est-à-dire en entrant chaque nom comme une valeur hachée du nom (supposons MD5 - 32 bits).

Si tel est le cas - cela ne devrait-il pas être une caractéristique de la base de données et non quelque chose que le client gère?

Répondre

3

En supposant que votre base de données génère un index pour la clé primaire (et je ne peux pas l'imaginer), elle le fait pour vous. Alors oui, il devrait absolument être quelque chose que la base de données gère.

2

"Est-ce que hacher les valeurs optimise les opérations de quelque façon que ce soit?" Pas vraiment.

Les hachages sont à sens unique. Vous ne pouvez pas effectuer une analyse de table et reconstruire le nom d'origine.

Si vous souhaitez conserver à la fois le nom et le hash-name, vous avez enfreint une règle fondamentale en incluant des données dérivées. Maintenant, une mise à jour du nom nécessite une mise à jour de hachage.

Le "répandre mes valeurs autour uniformément" qui se passerait avec un hachage, est le travail d'un index.

1

Non, ne les hachez pas. Votre base de données va construire un index basé sur les données, et le hachage n'aidera pas. La seule fois où pourrait aider est si vos valeurs de clé étaient beaucoup plus longues que le hachage.