Optimisation d'une Table / Requete
Bonjour,
J'ai actuellement une table qui a le schéma suivant :
Code:
1 2 3 4 5
| TYPETAUX CHAR(1) NOT NULL
CODEPERSONNE VARCHAR(10) NOT NULL
CODEPRODUIT VARCHAR(5) NOT NULL
TAUX DECIMAL(15,5)
DAT DATE NOT NULL |
Elle Contient plusieurs millions d'enregistrements, mes SELECT toujours de la forme
Code:
SELECT CODEPRODUIT,TYPETAUX,TAUX WHERE CODEPERSONNE = XXXX AND DAT = XXXX.
Première question : est il recommandé de faire des SELECT sur des champs VARCHAR, la requete ne serait elle pas plus rapide si mon champ CODEPERSONNE était de type INTEGER ?
Seconde question : les données dans cette table sont toujours ou presque lié par 2, je m'explique :
- pour chaque jour,personne,produit j'ai 2 enregistrements, 1 avec TYPETAUX à A et B :
Code:
1 2
| A,TOTO,XR25,12.5421,'12.06.09'
B,TOTO,XR25,18.324 ,'12.06.09' |
Je voulais savoir si je pouvais avoir une requete qui ramène 1 seul enregistrement avec les 2 valeurs de TAUX (1 avec le TYPETAUX A et l'autre B) :
Code:
TOTO,XR25,12.5421,18.324,'12.06.09'
Ou vaut il mieux créer une SECONDE TABLE alimenté par TRIGGERS sur les DELETE et INSERT de la première qui aurait ce schéma et qui me permettrai de ramener simplement 1 enregistrement avec les 2 TAUX:
Code:
1 2 3 4 5
| CODEPERSONNE VARCHAR(10) NOT NULL
CODEPRODUIT VARCHAR(5) NOT NULL
TAUX_A DECIMAL(15,5)
TAUX_A DECIMAL(15,5)
DAT DATE NOT NULL |
La Table d’origine n’a pas ce schéma, car je penses que niveau performance c’est mieux de faire un DELETE / INSERT ( WHERE CODEPERSONNE,CODEPRODUIT,TYPETAUX,DAT) plutôt que dans le second schéma, un SELECT Si enregistrement alors UPTDATE sinon INSERT, car en fait l’alimentation de TAUX avec TYPETAUX A ou B ne se fait pas du tout en même temps dans mon programme.
Merci