Bonjour
J importe 235240 lignes dans un table que je crée à la volée comme suit (delphi +asolute database) et je lance 2 procedures
CREATE TABLE Cours ( id AUTOINCINTEGER, date_time VARCHAR(20), open FLOAT, low FLOAT, high FLOAT, middle FLOAT, cross_up SMALLINT, cross_down SMALLINT, sens_bar SMALLINT, spread FLOAT);
Resultats :
insertion 4m41.125 secondes.
procedure 1 2m43.734
procedure 2 44s985
je me dis fort logiquement qu il foit y avaoir un moynen d ameliorer les perfs donc je me dirige vers les index.
Les requets que je fais au travers de mes diverses procedures sont
1 2 3 4 5 6 7 8 9 10 11 12
|
select * from cours where (cross_up =1 and sens_bar=1) or (cross_down =1 and sens_bar=1) order by id asc
select * from cours where id>=123456 and low<=123456 order by id asc
select * from cours where id>=123456 and high=123456 order by id asc
select * from Cours where id>=123456 and High>=middle order by id asc
select * from Cours where id>=123456 and low<=middle order by id asc
select spread from cours where id=123456
select low,high,middle from cours where id=123456 |
Donc je m essaie aux index avec
1 2 3 4 5 6
|
create unique index UniqueName1 ON cours (id,low);
create unique index UniqueName2 ON cours (id,high);
create unique index UniqueName3 ON cours (id,low,high);
create index UniqueName4 ON cours (cross_up,sens_bar);
create index UniqueName5 ON cours (cross_down,sens_bar); |
Fier de moi je teste. Résultats : Insertion 6.45.812 (+2minutes et 2sec env) procedure 1 : 2.48.328 (+5 secondes) et procedure 2 : 49.250 (+5 secondes)
Ma question est donc des plus simples : Quels index creeriez vous afin d'optimiser les perfs de mes requetes requetes ?
Ah une dernière question : le temps d exécution d'une requête de type Select * est il équivalent à celui d une requête Select Nom du Champ ?
Merci de votre aide.
Stéphane
Partager