Bonjour,
Sur une page web j'ai un champs "Contact" qui permet à l'utilisateur de chercher une personne par son numéro de matricule.
J'ai fait une boucle qui parcourt ligne par ligne toute ma table des personnes et elle ne s'arrête pas tant que ce qui a dans le champs "contact" n'est pas égal à une ligne dans la colonne PersonneNo.
Lorsque le numéro de personne recherché est proche de 1 il n'y a pas de problème, cependant plus le numéro de personne recherché est grand plus le programme met de temps. J'ai plusieurs centaines de milliers de personnes dans ma base de données et au delà du numéro 100 le programme commence à mettre énormément de temps, alors je ne vous parle même pas de ce que ça donne si le numéro est très grand ou bien si pas égal à une valeur de la bdd, j'ai pas attendu assez longtemps pour savoir combien de temps ça pouvait mettre!
En gros ma question c'est comment améliorer les performances de cette recherche et faire en sorte que peu importe le numéro recherché, le résultat soit vite trouvé?
Voici mon code:
Merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 String requeteSQL = "SELECT MAX(personne_no) FROM UA1_PERSONNE"; SqlCommand oCommand = new SqlCommand(requeteSQL, oConnection2); int max = (int)oCommand.ExecuteScalar(); int i = 0; while (i < max+1) { IPersonne pers = personne.Lire(i); if (pers != null) { if (Contact.Text.Equals(Convert.ToString(pers.PersonneNo))) { Response.Redirect("Contacts.aspx?PersonneNo=" + i); } else { i++; } } else { i++; } } LabelErreur.Text = "Ce numéro de personne n'existe pas";
Partager