Optimisation rendu de recherche

Résolu
Signaler
-
Messages postés
493
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
24 mai 2017
-
Bonjour à tous !
J'ai une petite question d'optimisation à vous soumettre :

J'ai un site avec une base de données et une liste d'objets inclus dedans.
Ces objets sont classé par type identifiés par des id de types.

Ma page d’accueil n'affiche rien mais plusieurs liens dessus permettent de lancer une recherche par type.
Un clique lance donc une requête SQL qui, par un foreach rend les objets, mais dans l'ordre où ils ont été mis dans la BDD !

Je souhaiterais simplement pouvoir régler leur ordre d'apparition.

Pour cela j'ai pensé à créer une clé NUMERIC supplémentaire par objet et ainsi définir l'ordre dans lequel je les veux.
Cependant j'ai peur que cela rende les recherches affreusement lente parce que l'algorithme va puiser dans la BDD puis stocker en local puis faire une boucle de tri croissant sur le résultat de la requête... lourd...

Merci d'avance pour vos réponses !

4 réponses

Messages postés
14832
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
5 décembre 2021
157
Bonjour,

Pourquoi ne pas utiliser la clause SQL ORDER BY ?

v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
C'est une idée absolument brillante !

Mais toujours pour les soucis d'optimisations :
Perd-t-on beaucoup en performance entre une requête "classique" et la même requête en ajoutant "ORDER BY #" ?

Aussi je me pose plusieurs questions sur Order by : Comment SQL résous-t-il le conflit lorsque 2 nombres sont identiques ?
Messages postés
14832
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
5 décembre 2021
157
Bonjour,

Coté performance, entre Order By et un tri "manuel", il y a pas photo, ORDER BY est le plus rapide.
concernant la résolution des conflits, il 2 données sont identiques, il ne fait rien, si tu as besoin de mettre plusieurs critère de tri, tu peux ajouter les champs à la clause :
ORDER BY Champ1 ASC, Champ2 DESC, Champ3 DESC, ...

v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
Messages postés
493
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
24 mai 2017
3
Salut :), de plus, sur une table au il y a bcp d'enregistrement, utiliser un champ indexer est bien plus performant.
C'est pour cela qu'il est très important de bien sélectionner le moteur de stockage à la création de la table.
Mais pour cela, je te conseil la doc :).
Il y a ceci MyISAM et InnoDB qui te donnera une idée.

stéph