IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

Array field ou table de jointure


Sujet :

PostgreSQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    134
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 134
    Points : 69
    Points
    69
    Par défaut Array field ou table de jointure
    Bonjour,

    Je me demande qu'est-ce qui serait le plus optimisé pour le cas suivant :

    J'ai deux tables :
    - Sample : qui contient en gros des individus
    - Variant ; qui contient les caractéristiques de ces individus.

    un Sample est lié à un très grand nombre de Variant diférents (disons 1 à 5 millions)
    et chaque variant est commun à plusieurs sample.
    Pour vous donner un ordre de grandeur, j'ai actuellement un jeu de test où j'ai
    - 20 samples
    - plus de 100 millions d'associations variant - samples
    - mais en fait "à peine" 10 millions de variant différents

    La question maintenant est de savoir comment faire la jointure entre ces deux données de façon à ce que ça soit le plus rapide ensuite quand on fait des requêtes du genre :
    - donne moi tout les variants concernant tel sample;
    - donne moi tout les variant commun à ces deux samples, mais pas à celui là;
    - etc.

    Je vois 3 possibilités :
    - faire une table SampleVariant avec 2 champs : sample_id et variant_id.
    - mettre un champs de type array(int) dans la table variant, qui contiendrait pour chaque variant la liste des samples qui le contienne
    - mettre un champs de type array(bool) dans la table variant qui indiquerait pour chaque variant, grace au booléen à la position idx=sample_id du array, si le sample contient ou pas ce variant.


    (Pour l'instant je n'ai eu le temps de tester que la première solution)
    Quel est votre avis ? Postgre indique dans sa doc qu'on peut mettre des index sur les champs array, mais je me demande en quelle mesure c'est vraiment efficace et conseillé de le faire. Si à terme j'ai des milliers de sample, et des dizaines de millions de variants...

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 789
    Points
    30 789
    Par défaut
    Un SGBD est conçu pour manipuler des tables et des jointures. Cela il sait très bien le faire. Si tu lui demandes de faire des recherches et des calculs dans des tableaux, ce sera sans doute moins performant
    A mon avis ta première solution est de loin la meilleure.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

Discussions similaires

  1. Table de jointure pour une seule table
    Par Louis-Guillaume Morand dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 06/10/2005, 18h49
  2. Regrouper les infos de deux table sans jointure
    Par ricobye dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/07/2005, 09h30
  3. [sql] afficher deux champs de deux tables sans jointure
    Par Hell dans le forum Langage SQL
    Réponses: 6
    Dernier message: 30/06/2005, 12h38
  4. Tables liées / Jointures
    Par giaco dans le forum Langage SQL
    Réponses: 18
    Dernier message: 02/05/2005, 10h17
  5. 2 Count() sur deux tables en jointures gauches
    Par Alexandre T dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/09/2003, 16h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo