Vous pouvez effectuer cette opération sans base de données. La clé consiste à réduire la taille de A, car A est beaucoup plus grand que B. Voici comment procéder:
Calculer des hachages 64 bits en utilisant une fonction de hachage décent pour les chaînes du fichier B. Stockez-les en mémoire (dans une table de hachage), ce que vous pouvez faire parce que B est petit. Ensuite, hachez toutes les chaînes de votre fichier A, ligne par ligne, et voyez si chacune correspond à un hachage pour votre fichier B. Toutes les lignes avec des hachages correspondants (à un de B), doivent être stockées dans un fichier C.
Lorsque ce processus est terminé, le fichier C aura le petit sous-ensemble de A de chaînes potentiellement assorties (à B). Maintenant, vous avez un fichier C beaucoup plus petit que vous avez besoin de comparer les lignes de B avec. Cela réduit le problème à un problème où vous pouvez réellement charger toutes les lignes de C en mémoire (comme table de hachage) et comparer chaque ligne de B pour voir si elle est en C.
Merci pour vos réponses. Au début, je pensais que j'avais trop de données à comparer en mémoire (10^6), alors j'ai pensé à trier les données en premier et à les réduire en morceaux. Cependant stocker un fichier dans un hachage ressemble à une solution parfaite et simple maintenant. – nweb
alors vous devriez accepter la réponse de Michael Goldshteyn en cliquant sur la coche sur le côté de sa réponse. –