Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[WD11] - [SQL] Problème de performance

3 réponses
Avatar
JCM
Bonjour.

J'ai la requête suivante qui attaque un fichier HF local au poste :

SELECT Utilisateurs.IDUTILISATEURS as IDUser, Utilisateurs.Nom_Uti + '
' + Utilisateurs.Pre_Uti AS NomUti
FROM Utilisateurs
WHERE Utilisateurs.Operateur = 0
AND Utilisateurs.IDClients = {pIDClient}
ORDER BY NomUti ASC

IDUTILISATEURS, Nom_Uti, Operateur & IDClients sont des clés doublons.
Le fichier compte 27 000 lignes

La requête prend 4s, celà me paraît énorme...Est-ce dû à la
concaténation ? Je remplis une liste déroulante avec...La requête ne
renvoie qu'une dizaine de résultats.

Meci d'avance

Jean-Christophe

3 réponses

Avatar
mat
JCM wrote:
...

SELECT Utilisateurs.IDUTILISATEURS as IDUser, Utilisateurs.Nom_Uti + '
' + Utilisateurs.Pre_Uti AS NomUti
FROM Utilisateurs
WHERE Utilisateurs.Operateur = 0
AND Utilisateurs.IDClients = {pIDClient}
ORDER BY NomUti ASC


...
La requête prend 4s, celà me paraît énorme...Est-ce dû à la
concaténation ? Je remplis une liste déroulante avec...La requête ne
renvoie qu'une dizaine de résultats.


...

Bonjour,

peut-être oui, en combinaison avec ORDER BY sur une rubrique faisant
partie d'une chaîne concaténée. On peut essayer de mettre NomUti
séparément dans le SELECT AS NomUti_2, pour le trie par "ORDER BY Nomuti_2".

Salutations
Mat
Avatar
patrice
"JCM" a écrit dans le message de
news:45ffc5ad$0$19237$
Bonjour.

J'ai la requête suivante qui attaque un fichier HF local au poste :

SELECT Utilisateurs.IDUTILISATEURS as IDUser, Utilisateurs.Nom_Uti + '
' + Utilisateurs.Pre_Uti AS NomUti
FROM Utilisateurs
WHERE Utilisateurs.Operateur = 0
AND Utilisateurs.IDClients = {pIDClient}
ORDER BY NomUti ASC

IDUTILISATEURS, Nom_Uti, Operateur & IDClients sont des clés doublons.
Le fichier compte 27 000 lignes



pour optimiser il faudrait que idclient,nomutil soit une clé composé pour
que tri et selection s'opére sur une seule clé


La requête prend 4s, celà me paraît énorme...Est-ce dû à la
concaténation ? Je remplis une liste déroulante avec...La requête ne
renvoie qu'une dizaine de résultats.



penser aussi que en sql, c'est windev qui décide des clés à utiliser . Son
critere sera probablement de favoriser les clés qui opérent la meilleur
sélection en nombre d'enregistrement, et pour cela, il est indispensable que
les stats soit calculées (cela n'est pas automatique)
Avatar
mat
Puisque la question m'interesse, voici la réponse.
L'éditeur SQL n'accepte pas de requête avec une rubrique dans ORDER BY
qui ne figure pas dans le SELECT.

Le test suivant sur un fichier avec 46'000 enregistrements et plusieurs
centaines dans la réponse s'exécute en moins d'une seconde. Et UserCode
n'est pas une clé.

SELECT UserCode, Invoice + UserCode + Comments AS Code FROM Transaction
WHERE IDProduct = 1430101
ORDER BY UserCode


Salutations
Mat