Bonjour,
J'ai actuellement une table qui a le schéma suivant :
Elle Contient plusieurs millions d'enregistrements, mes SELECT toujours de la forme
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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 ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT CODEPRODUIT,TYPETAUX,TAUX WHERE CODEPERSONNE = XXXX AND DAT = XXXX.
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 :
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 A,TOTO,XR25,12.5421,'12.06.09' B,TOTO,XR25,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 : Sélectionner tout - Visualiser dans une fenêtre à part TOTO,XR25,12.5421,18.324,'12.06.09'
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Merci
Partager