Basile Starynkevitch wrote:
Oui, j'ai bien des index pour chacune de mes tables. J'ai bien remarqué que, sans index, même lorsqu'il s'agit, après l'ouverture d'une table de, disons, 100,000 lignes, de faire afficher les lignes de la première à la dernière, çà demande quelques secondes s'il y a un index, et plusieurs minutes dans le cas contraire.On Sat, 18 Dec 2010 22:39:24 +0100 Bernard <bdebreil@teaser.fr> wrote:Bonsoir à tous,Je dispose d'une base MySQL comprenant environ 90 champs et 25000 éléments (lignes), connectée à OpenOffice.org_base via JDBC. Cette base comporte une douzaine de champs "lieux", sous forme de codes INSEE. J'ai par ailleurs une table de correspondance codes_INSEE => noms_localités.Je ne suis pas expert en MySQL, mais je sais que l'indexation y estdeterminante. As tu bien créé des indexes?
Elle se passe bien, et rapidement, s'il n'y en n'a qu'une seule... Au dela, c'est problèmatique !Voirhttp://dev.mysql.com/doc/refman/5.1/en/create-index.htmlFaire afficher, par une requête OO_base, le contenu de la table principale avec les noms des localités d'un des champs "codes_lieux", n'a pas posé de problème: relation jointure créée entre les deux tables. La requête s'est exécutée en à peu près une minute.Le problème, il commence dès qu'il est question de faire afficher les noms des localités, non plus d'un seul et unique champs "localité", mais de plusieurs (localité naissance, localité décès...). Avec deux tables, çà déconne déjà un maximum,Ta base est petite, elle tient en mémoire. Dans ma compréhension[très partielle] des choses, une jointure devrait bien se passer.
Si c'est bien Daniel de Rauglaudre qui a codé Geneweb (c'est l'initiateur de ce logiciel), je le connais un peu.Et si ça tient en mémoire et si c'est convenablement indexé, je pourrais imaginer une réponse assez rapide.... (intuitivement, j'imaginerais en quelques secondes, car ça serait peut-être du O(n log n) avec n autour de 25000). Si tu t'interesses à la généalogie (moi pas), tu pourrais peut-être regarder GeneWeb http://pauillac.inria.fr/~ddr/GeneWeb (c'est codé par quelqu'un de compétent dans un langage puissant, Ocaml).
Cordialement.