Bonjour à tous,
J'ai crée une base de données de ~ 2GiB sous Mariadb (InnoDB). Cette dernière contient les tables suivantes :
oncodb_gene (~56 425 rows)
avec comme index :
id
oncodb_copynumberalteration (~ 12 116 669 rows)
avec comme index :
id
gene_id_id
sample_id_id
oncodb_variant (~534 140 rows)
avec comme index :
id
gene_id_id
sample_id_id
chrid
avis
comment
oncodb_sample (~ 554 rows)
avec comme index :
id
trial_id
J'ai besoin d'effectuer une jointure entre ces 4 tables, et mon problème vient du fait que la requête pour réaliser cette dernière est extrêmement longue (~ 15 minutes)
la requête en question :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT * FROM oncodb_copynumberalteration INNER JOIN oncodb_gene on oncodb_copynumberalteration.gene_id_id=oncodb_gene.id and oncodb_gene.pdf=1 INNER JOIN oncodb_sample on oncodb_sample.id=oncodb_copynumberalteration.sample_id_id and oncodb_sample.trial_id=2 LEFT JOIN oncodb_variant on oncodb_copynumberalteration.gene_id_id=oncodb_variant.gene_id_id and oncodb_copynumberalteration.sample_id_id=oncodb_variant.sample_id_id and oncodb_variant.comment != 'COMMON SNP |' and oncodb_variant.comment != 'COMMON SNP | COSMIC |' and oncodb_variant.comment != 'COMMON SNP | COSMIC HOTSPOT |' and oncodb_variant.avis != '' WHERE ((oncodb_copynumberalteration.alteration_type = 'Amp' or oncodb_copynumberalteration.alteration_type = 'Del') or oncodb_variant.avis != '')
J'ai essayé des variantes mais sans succès
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 SELECT GENE.symbol,alteration_type,trial_id,seq_name,cgh_name,pdf,avis FROM ( SELECT * FROM oncodb_gene WHERE oncodb_gene.pdf=1 ) as GENE INNER JOIN ( SELECT gene_id_id,alteration_type,trial_id,oncodb_copynumberalteration.sample as cgh_name, sample_id_id FROM oncodb_copynumberalteration INNER JOIN oncodb_sample on oncodb_sample.id=oncodb_copynumberalteration.sample_id_id WHERE oncodb_sample.trial_id=4 ) as CNA on GENE.id=CNA.gene_id_id LEFT JOIN ( SELECT seq_name,avis,comment,gene_id_id,sample_id_id FROM oncodb_variant INNER JOIN oncodb_sample on oncodb_sample.id=oncodb_variant.sample_id_id WHERE oncodb_sample.trial_id=4 and oncodb_variant.comment != 'COMMON SNP |' and oncodb_variant.comment != 'COMMON SNP | COSMIC |' and oncodb_variant.comment != 'COMMON SNP | COSMIC HOTSPOT |' and oncodb_variant.avis != '' ) as VARIANT on GENE.id=VARIANT.gene_id_id and CNA.sample_id_id = VARIANT.sample_id_id WHERE ((alteration_type = 'Amp' or alteration_type = 'Del') or avis != '')
Il y a t-il une possibilité d'optimiser les choses selon vous ou est ce que je dois me résoudre à ne pas faire cette jointure.
Partager