• # Tout faire en base

    Posté par (site web personnel) . En réponse au journal Analyse de texte. Évalué à 3.

    Bonjour,

    C'est plutôt non intuitif, mais tu pourrais tout faire en SQL pur... Surtout si tu cherches de la performance.
    Tu charges chaque mot dans une table, avec un traitement de type sql_loader et ensuite tu manipules tout en base de données avec des GROUP BY et des DISTINCT et des COUNT pour avoir respectivement les mots, une seule ligne dans une table même si ton mot est répété, et le nombre d'occurences... Et tu as toutes les primitives en SQL pour manipuler les chaînes de caractères...

    Deuxième chose contre intuitive : sur Oracle et dans certains cas sur POSTGres, un DROP TABLE et CREATE AS SELECT c'est beaucoup plus rapide que des INSERT et des UPDATES.

    SQL c'est ensembliste, et comme tu te fiches de l'ordre des mots, et bien tu pourrais avoir des perfs proches du C (parce que l'implémentation de l'exécuteur de requête et de parcours de bases de données, c'est du bas niveau).

    J'ai fait ça des années, et d'ailleurs avec quelques astuces mêmes pour des algorithmes plutôt procéduraux, les résultats sont bluffants.