Delphi, Firebird, et lenteurs
Bonjour,
J'ai actuellement des petits problèmes de SQL ... hehe
Si quelqu'un savait ... ce serait cool ...
Voila :
3 bases : donnees, TableData et entreprises :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| CREATE TABLE "DONNEES"
(
"ID" VARCHAR(15) NOT NULL,
"NOM" VARCHAR(150),
"CODEPOSTAL" VARCHAR(5),
"VILLE" VARCHAR(150),
"ANNEE" INTEGER NOT NULL,
"CONSOL" INTEGER DEFAULT 0 NOT NULL,
PRIMARY KEY ("ID", "ANNEE", "CONSOL")
);
CREATE TABLE "ENTREPRISES"
(
"ID" CHAR(16) NOT NULL,
"ANNEE" NUMERIC(4, 0) NOT NULL,
tout plein de valeurs (x70)
"CONSOL" INTEGER DEFAULT 0 NOT NULL,
PRIMARY KEY ("ID", "ANNEE", "CONSOL")
);
CREATE TABLE "TABLEDATA"
(
"ID" VARCHAR(15) NOT NULL,
"NB" NUMERIC(18, 4),
tout plein de valeurs (x>100)
"..." NUMERIC(18, 4),
"ANNEE" INTEGER NOT NULL,
PRIMARY KEY ("ID", "CONSOL", "ANNEE")
); |
Quand je fais ces requêtes, ca fonctionne nickel :
Code:
1 2 3 4 5 6 7 8 9
| SELECT TableData.{FIELD1, FIELD2, ...}, donnees.{FIELD1, FIELD2, ...},
entreprises.{...}
FROM donnees
INNER JOIN TableData ON TableData."ID" = donnees."ID" AND TableData."CONSOL"
= donnees."CONSOL"
LEFT JOIN entreprises ON TableData."ID" = entreprises."ID" AND
TableData."CONSOL" = entreprises."CONSOL" AND TableData."ANNEE"
=entreprises."ANNEE"
WHERE (( ( TableData."CONSOL" = '0')) AND (TableData."ANNEE"= '2002')); |
Par contre, quand je fais les requêtes suivantes, cela mets trois ans :
Code:
1 2 3 4 5 6 7 8 9 10 11
| SELECT TableData.{FIELD1, FIELD2, ...}, donnees.{FIELD1, FIELD2, ...},
entreprises.{...}
FROM donnees
INNER JOIN TableData ON TableData."ID" = donnees."ID" AND TableData."CONSOL"
= donnees."CONSOL"
LEFT JOIN entreprises ON TableData."ID" = entreprises."ID" AND
TableData."CONSOL" = entreprises."CONSOL" AND TableData."ANNEE"
=entreprises."ANNEE"
WHERE (( ( TableData."CONSOL" = '0') AND ( donnees."CODEPOSTAL" LIKE '45%')
AND ( entreprises."COL5" >= '0.2') AND ( ( TableData."NB" >= '50000000')
AND ( TableData."NB" <= '150000000'))) AND (TableData."ANNEE"= '2002')); |
Qeulqu'un aurait une solution ?
S'il vous plait !
Edité par Barbibulle : Ajout des balises [ code ] et [ /code ]