thomas.l Posté(e) 26 juin 2009 Share Posté(e) 26 juin 2009 Bonjour, J'ai quelques questions concernant l'optimisation d'une base sqlite3 pour ceux qui se seraient éventuellement penchés sur le sujet : 1/ Vaut-il mieux faire des unions ou des jointures externes ? Ici ce serait la performance qui m'intéresserait 2/ Vaut il mieux créer des tables de constantes (ex : TYPE(id, name)) pour économiser la place des doublons de chaines dans la table appelante, au risque d'alourdir les requêtes et la lisibilité globale de la base, et sachant que les tables (de constantes) même quasi vides prennent pas mal de place ? Ou ne pas se prendre la tête et dupliquer ma VARCHAR dans la table appelante ? Ici c'est la taille de la db et la rapidité d'éxécution qui m'intèressent. 3/ Y'a-t-il des contre-indications à l'utilisation de vues ? J'ai des vues un peu complexes qui se requêtent les unes les autres, j'optimise leurs requêtes en ce moment car je l'ai écrites à la va-vite et elle rament donc un peu mais j'ai pas envie d'y passer du temps s'il existe des raisons évidentes à ne pas utiliser les vues du tout. (Pour l'instant les optimisations sont tout à fait satisfaisantes) Merci de vos réponses. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
oeildefeu Posté(e) 26 juin 2009 Share Posté(e) 26 juin 2009 http://www.developpez.net/forums/f154/bases-donnees/autres-sgbd/sqlite/ pitetre plus de réponses :) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
thomas.l Posté(e) 3 juillet 2009 Auteur Share Posté(e) 3 juillet 2009 Je n'ai pas vraiment eu le temps d'y travailler depuis, c'est pourquoi je n'ai pas répondu mais pour le /2, un test facile: je créé une base avec 1 table : ANIMALS (ID INTEGER PK, TYPE VARCHAR) j'en créé une autre avec 2 tables TYPES(ID INTEGER, NAME VARCHAR), ANIMALS(ID INTEGER, TYPE INTEGER REFERENCES TYPES(ID)) Pour ~1000 entrées dans ANIMALS avec le même type (un nom d'une 20aine de caractères par exemple), la base 1 est deux fois plus grosse que la deuxième. Logique vu qu'on répète 1000 fois la chaine de caractères dans la 1 et une seule fois dans la 2. Mais la taille que prennent les tables elles mêmes, juste parce qu'elles existent, est importante et pour moins de données c'est moyennement intéressant d'essayer d'optimiser. Maintenant faut voir les perfs à faire les jointures dans la base 2 si c'est rentable comme optimisation. Pour le 3/, en retravaillant les requêtes constituant les vues j'obtiens une réponse instantanée alors qu'il y a un produit cartésien entre des vues d'union de vues de vues et des unions dans tous les sens (même si il n'y a pas des millions d'entrées). Je suis assez impressionné de voir les perfs de la db sur le mobile. Manque juste les triggers récursifs à sqlite. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Rejoignez la conversation
Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.