• [^] # Re: Merci !

    Posté par . En réponse au message Gérer *beaucoup* (vraiment !) de bases MySQL. Évalué à 5.

    ans le cas d'une requête du genre "SELECT `bidule` FROM `chose` WHERE `machin`="truc", on est en O de quoi ? Et quand il y a des jointures, des relations n:m ? Si vous avez des infos...

    Pour le select simple:
    - O(n) s'il n'y a pas d'index sur le champ 'machin'
    - O(log(n)) si 'machin' est indexé (index de type B-TREE, les seuls utilisés par MySQL sur les tables de type MyISAM)
    -O(const) si 'machin' a un index de type HASH

    Pour les jointures entre deux tables:
    - O(n) * O(m) sans index
    - O(log(n) * O(log(m)) avec les index qui vont bien
    En pratique, faire des jointures sans index relève de l'opération suicide dès que les tables ont plus de quelques enregistrements.

    PS: Je ne connais pas Dokeos mais je ne peux pas m'empêcher de penser qu'une application qui a besoin de 200,000 tables et qui nécessite d'en ajouter pour intégrer de nouveaux cours a sérieusement «foiré» la définition de son modèle de données.