PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Optimiser sqlPremier
Optimiser sqlPremier
Débuté par Monsieur AURAY-LORIVAL, 20 mai 2017 00:28 - 8 réponses
Membre enregistré
64 messages
Popularité : -1 (1 vote)
Posté le 20 mai 2017 - 00:28
Bonjour,
Alors voilà à l'initialisation d'une fenêtre je fais une requête de sélection très simple mais qui pourrait être amené à récupérer un million de ligne, je test avec 22 enregistrements et rien que le SQLExecWDR + SQLPremier ça prend 4966ms... c'est énorme pour 22 enregistrements surtout que je fais un select uniquement des rubriques dont j'ai besoin (8).
Comment optimiser ma requête ?

Voici mon code:
SI SQLExecWDR("REQ_ParcoursTsPlace") = Vrai ALORS
SQLPremier("REQ_ParcoursTsPlace")
//Traitements
FIN


Ma requête:
SELECT
place.IDNum AS IDNum,
place.Type AS Type,
place.Name AS Name,
place.NbrAS Nbr,
place.linkAS link,
place.orderAS order,
place.freeAS free,
place.htimeAS htime
FROM
place


Merci à vous
Message modifié, 20 mai 2017 - 00:29
Membre enregistré
2 566 messages
Popularité : +222 (260 votes)
Posté le 20 mai 2017 - 06:37
Bonjour,

Sur quelle base travailles-tu ? (hfsql, sqlserver,...)

--
Cordialement,

Philippe SAINT-BERTIN
Géode Informatique
Membre enregistré
64 messages
Popularité : -1 (1 vote)
Posté le 20 mai 2017 - 13:01
Je travaille sur une base MySql
Je m'y connecte via SQLConnecteWS à l'initialisation de mon projet.

Cdt,
Message modifié, 20 mai 2017 - 13:04
Membre enregistré
64 messages
Popularité : -1 (1 vote)
Posté le 20 mai 2017 - 14:11
je viens de faire différent test, le problème n'est pas le SQLPremier mais le SQLExecWDR qui prend bien trop de temps.
Membre enregistré
2 566 messages
Popularité : +222 (260 votes)
Posté le 20 mai 2017 - 15:41
Bonjour,

D'un autre côté, tu passe à travers un WS pour accéder à tes données. Tu ne peux pas avoir la vitesse d'un accès sans surcouche.

--
Cordialement,

Philippe SAINT-BERTIN
Géode Informatique
Membre enregistré
342 messages
Popularité : +30 (32 votes)
Posté le 21 mai 2017 - 13:38
Bonjour

Un Webservice n'est pas fait pour renvoyer beaucoup de données
Essayes sur une base locale ou réseau et tu verras la différence

Et tu comptes récupérer un million de lignes par Webservice ? Tu auras le temps d'aller boire le café ... pendant quelques heures

--
Pascal H. http://phapps.e-monsite.com
Membre enregistré
2 566 messages
Popularité : +222 (260 votes)
Posté le 21 mai 2017 - 15:46
Voir quelques jours. D'autant que tu vas avoir un gros timeout !!!

Il faut utiliser les technologies à bon escient...

--
Cordialement,

Philippe SAINT-BERTIN
Géode Informatique
Membre enregistré
64 messages
Popularité : -1 (1 vote)
Posté le 21 mai 2017 - 16:51
Je suis passé à php4wd, en local c'est super rapide mais quand j'heberge le script il est très long à s'executer.
J'ai testé avec le script en local de me connecter à ma base distante et super rapide pourtant.
Ducoup là j'essaie d'installer ma base sur le meme serveur qui héberge mes scripts pour faire toute les requetes en localhost, ça changera grand chose ou rien?
Membre enregistré
2 566 messages
Popularité : +222 (260 votes)
Posté le 22 mai 2017 - 06:39
Bonjour,

N'ayant pas la teneur du projet, ne connaissant pas l'architecture matériel, il est très compliqué de répondre à cette question. Ce que je peux dire, c'est que si tu veux ramener des millions de lignes depuis une base externe au travers d'un webservice, ça ne fonctionnera pas. Le WS n'est pas fait pour ça. Ce que tu cherches à faire s'apparente plutôt à de la réplication de données.

En outre, si l'application accède aux données en local, quel est l'intérêt d'utiliser php4wd ? Utilise soit un accès natif, soit un accès oledb ou encore un accès odbc. Chaque technologie a son utilité.

--
Cordialement,

Philippe SAINT-BERTIN
Géode Informatique