Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 12/07/2012 17:06:50
- yannok
- Membre
Optimisation requête répétée
Bonjour,
J'ai 2 tables : table_ref et table_courante
chacune de ces tables à 64 colonnes desc_0, desc_1 desc ... desc_63
Lors d'une requête j'ai besoin de calculer une distance " euclidienne " de la façon suivante
table_ref.desc_0 - table_courante.desc_0) * (table_ref.desc_0 - table_courante.desc_0) + (table_ref.desc_1 - table_courante.desc_1) * (table_ref.desc_1 - table_courante.desc_1) +... + (table_ref.desc_63 - table_courante.desc_63) * (table_ref.desc_63 - table_courante.desc_63)
J'ai remarqué que plus je rajoute de colonnes, plus ma requête prend du temps (normal) :
ainsi faire select (table_ref.desc_0 - table_courante.desc_0) * (table_ref.desc_0 - table_courante.desc_0) from table_ref , table_courante prend par ex 100 ms
le fait de rajouter (table_ref.desc_1 - table_courante.desc_1) * (table_ref.desc_1 - table_courante.desc_1) prend 50 ms de plus etc...
ma question est la suivante : est ce que ce serait possible d'optimiser cette requête puisqu'il s'agit toujours du mm type de calcul seul l'appel des colonnes change.
Merci !
Hors ligne
#2 12/07/2012 22:13:34
- gleu
- Administrateur
Re : Optimisation requête répétée
En dehors de précalculer les valeurs, je ne vois pas trop ce que vous pouvez faire de plus. Et même en précalculant, vu la rapidité de la requête, le temps de calcul est minime par rapport au temps de récupération de la donnée sur disque ou en mémoire.
Guillaume.
Hors ligne
#3 17/07/2012 18:21:53
- SQLpro
- Membre
Re : Optimisation requête répétée
Bonjour,
J'ai 2 tables : table_ref et table_courante
chacune de ces tables à 64 colonnes desc_0, desc_1 desc ... desc_63
Déjà la modélisation n'est pas bonne. Vous violez par élision la première forme normale, dans le sens ou ces 64 colonnes aurait pu figurer dans un tableau et pourquoi d'ailleurs se limiter à 64 ? (en outre y a t-il des colonnes vides - NULL ?)
Remodélisez en déplaçant ces 64 colonne dans une table liée à la précédente en relation 1:n (n variant de 0 à 64).
Ensuite indexez les tables correctement.
Reprenez vos requêtes et comparez.
A +
Frédéric Brouard, alias SQLpro, ARCHITECTE DE DONNÉES, Expert langage SQL
Le site sur les SGBD relationnel et langage SQL : http://sqlpro.developpez.com/
Modélisation de données, conseil, expertise, audit, optimisation, tuning, formation
* * * * * Enseignant CNAM PACA, ISEN Toulon, CESI Aix en Provence * * * * *
Hors ligne
Pages : 1