[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: MySQL et OO.org_base: problèmes avec requêtes pluri-tabulaires



Basile Starynkevitch wrote:
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 est
determinante. As tu bien créé des indexes?
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.

Voir
http://dev.mysql.com/doc/refman/5.1/en/create-index.html
Faire 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.
Elle se passe bien, et rapidement, s'il n'y en n'a qu'une seule... Au dela, c'est problèmatique !

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).
Si c'est bien Daniel de Rauglaudre qui a codé Geneweb (c'est l'initiateur de ce logiciel), je le connais un peu.

Cordialement.


Reply to: