bonjour,
j'ai une table "table_1" de plus de 500.000 enregistrements et 150 champs (dont ident qui est la pk)
j'ai transformé la table_1 en une table "table_2" comportant 3 colonnes
ident,nom_champs,valeur:
ident est l'ident de la table_1
nom_champs est l'un des 150 champs de la table table_1
valeur est la valeur d'un champs donné pour un ident donné
par ex dans la table_1
ident champs1 champs2 .... champs150
id01 val1_1 val1_2 .... val1_150
id02 val2_1 ......
dans la table table_2 on aura
ident nom_champs valeur
id01 champs1 val1_1
id01 champs2 val1_2
...
id01 champs150 val1_150
id02 champs1 val2_1
...
j'ai rajouté sur table_2 2 index l'un sur ident l'autre sur nom_champs
je réalise la requête sur la table_1 de la forme:
select sum(champsn) from table_1;
la requête s’exécute en 3 sec
sur la table_2 j’exécute la requête équivalente qui me donnera le même résultat
select sum(valeur) from table_2 where nom_champs='champsn'
la requete s'execute en 120sec
je pensais q'un sgbd était optimisé pour des tables avec peu de colonnes même avec beaucoup d'enregistrements
pourquoi observe t'on tant de différence?
Partager