2012-01-20 2 views
1

Ma table db aura un col "a" TEXT avec de longues chaînes, comme plusieurs paragraphes. Étant donné une chaîne d'entrée, je veux trouver l'enregistrement correspondant. Si la table contient des millions de lignes, qu'est-ce qui serait le plus rapide? Un simpleLa méthode la plus rapide pour trouver la correspondance exacte d'une longue chaîne de caractères dans un grand SQL db

WHERE a = ? 

Ou devrais-je calculer et stocker un hachage md5 de chaque ligne, puis correspondre à cela? Suggestions bienvenues.

+0

La chaîne d'entrée sera-t-elle une correspondance exacte ou une relation "contient"? –

Répondre

1

Si vous voulez une correspondance exacte, il sera beaucoup plus rapide pour stocker le hachage et comparer à cela. Cela empêchera les recherches par sous-chaîne, mais il est beaucoup plus rapide de comparer 4 caractères que de vérifier des milliers.

Il y aura une surcharge pour calculer le hachage sur votre paramètre de recherche, mais ce n'est rien comparé à une comparaison de chaîne avec autant de données.

+0

Merci de confirmer cela. Je n'ai pas encore testé, mais c'est aussi mon hypothèse. Et, oui, les matchs doivent être complets et exacts, des espaces et tout. – punkish

+0

Je suis d'accord avec cela, surtout quand l'appariement sera fait beaucoup plus souvent que l'insertion. – psur

Questions connexes