Python le plus court d'id unique à partir de chaînes

J'ai plus de 100 millions d'unique des chaînes de caractères (VARCHAR(100) UNIQUE dans la base de données MySQL). Maintenant, j'utilise le code ci-dessous pour créer de hachage unique d'eux (VARCHAR(32) UNIQUE) afin de réduire la taille de l'index de la table InnoDB (un index unique sur varchar(100) est environ 3 fois plus grande que sur varchar(32) domaine).

id = hashlib.md5(str).hexdigest()

Est-il une autre méthode pour créer de la plus courte des identifiants de ces chaînes et de prendre des mesures raisonnables de l'unicité des garanties?

SHA1? Notez que vous pouvez faire les cordes plus courte encore par l'utilisation d'une base-64 version de la digérer, plutôt que d'un hex à un: base64.b64encode(hashlib.md5("foo").digest())
Vous pouvez utiliser un fichier BINAIRE(16) de la colonne de stocker le hash MD5, sans hex ou de l'encodage base64.

OriginalL'auteur jack | 2012-06-19