Accès rapide aux données dans une table

Résolu/Fermé
pulls Messages postés 136 Date d'inscription mercredi 30 décembre 2009 Statut Membre Dernière intervention 13 septembre 2023 - 9 sept. 2016 à 10:36
pulls Messages postés 136 Date d'inscription mercredi 30 décembre 2009 Statut Membre Dernière intervention 13 septembre 2023 - 15 sept. 2016 à 10:52
Bonjour,

j'ai une table dans ma données sqlserver 2008 R8 qui contient 4000 000 d'enregistrements. Quand j'exécute une requête pour retrouver un enregistrement, j'attends 30 minutes pour obtenir la réponse. Quand j'imagine que une requête sur le moteur de recherche GOOGLE met seulement quelques secondes pour afficher le résultat, je me pose des questions.

s'il vous plait, comment faire pour que mes requêtes s'exécutent rapidement ? je suis parfois obligé d'archiver les données de la table pour diminuer le volume , mais c'est assez ennuyeux.
Comment procéder donc , sans déplacer mes données?

merci


11 réponses

eljojo_e Messages postés 1155 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 14 octobre 2022 153
9 sept. 2016 à 14:25
Bonjour,
Peux-tu faire voir le code de ta requête ?
Quel est la config du server/pc ou est installer sql server ? (30min cest enorme)
Comment est construit ta table ? index etc..

Pour google, je pense pas que la puissance de calcul soit la même :)
0
pulls Messages postés 136 Date d'inscription mercredi 30 décembre 2009 Statut Membre Dernière intervention 13 septembre 2023 3
9 sept. 2016 à 18:38
Bonjour,

Voici ma table:

id_paris varchar(30)
date_course datetime
num_course int
num_ticket varchar(30)
num_serie int
type_jeux tinyint

clé primaire: id_paris et type_jeu

Configuration du serveur:

processeur: intel Xeon 2,27 GHZ
RAM: 4 GO
Système d'exploitation: Windows server 2008 enterprise 32 bits


merci de m'aider.
0
Utilisateur anonyme
10 sept. 2016 à 01:16
Bonjour,

et tu fais des recherches sur quel champ ????

Quels sont les index ?

30 minutes ???????????????????? Oh putain...

A+
0
pulls Messages postés 136 Date d'inscription mercredi 30 décembre 2009 Statut Membre Dernière intervention 13 septembre 2023 3
10 sept. 2016 à 08:17
Bonjour,

Je fais des recherches sur le champ num_ticket
Par exemple:
 select * from tbparis where num_ticket='4589766395' 
.
Pour avoir le résultat de cette requête, je dois attendre 30 mn.
Je ne sais pas si ce que vous appelez index, ce sont les clés primaires, j'ai 2 clés primaires :
Id_paris et type_jeu.
Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jordane45 Messages postés 38321 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2024 4 707
10 sept. 2016 à 16:59
Bonjour,

Je t'invite à lire ceci :
https://sqlpro.developpez.com/cours/quoi-indexer/


0
Utilisateur anonyme
12 sept. 2016 à 02:14
Pour faire simple,

crées un index sur ton champs num_ticket, en t'inspirant de ceci:
https://www.w3schools.com/sql/sql_create_index.asp

CREATE INDEX ticket_Index
ON tbparis (num_ticket) 



Dis nous en combien de secondes cela fonctionne :)

0
pulls Messages postés 136 Date d'inscription mercredi 30 décembre 2009 Statut Membre Dernière intervention 13 septembre 2023 3
13 sept. 2016 à 22:58
Waooooh! juste un clic et le résultat s'affiche. Merci mille fois HDU et tous ceux ou celles qui ont bien voulu bien m'aider.

je comprends maintenant pourquoi mon application devient lente au fur et à mesure que la table tbparis grossit.

S'il vous plait voici les critères de recherche et de validation d'un ticket via l'application:

n° de course
date course
n° ticket

Faut-il indexer seulement le champ num_ticket dans la BDD ou je dois indexer aussi les champs num_course et date_course, pour accélérer les recherches?

Si oui, est ce que le code ci-dessous convient pour indexer les 3 champs?


CREATE INDEX ticket_Index
ON tbparis (num_ticket , num_course, date_course )


merci
0
Utilisateur anonyme
14 sept. 2016 à 00:37
Salut,

cool !!!

Cela dépend, tu fais des recherches sur les champs num_course et date_course ???

A+
0
Utilisateur anonyme
14 sept. 2016 à 00:41
Je mets ta question initiale "résolue"...
0
pulls Messages postés 136 Date d'inscription mercredi 30 décembre 2009 Statut Membre Dernière intervention 13 septembre 2023 3
14 sept. 2016 à 11:28
Bonjour,

Je vous explique: Nous avons une application qui interagit avec une base de données qui contient des tickets gagnants à payer.
Pour afficher un ticket à payer via le formulaire de l'application, on doit saisir le n° du jeu, la date du jeu et le n° du ticket. après validation du formulaire, le système parcourt la table tbparis, retrouve ce ticket et l'affiche, avec le montant à payer.
Après paiement, le système doit de nouveau parcourir la table et mettre un drapeau (date paiement) devant ce ticket pour signifier que le ticket est payé.

Je voudrais donc savoir, si je dois indexer seulement le champ num_ticket ou tous les champs qui entrent dans les critères de recherche comme les champs num_course et date_course.

Cordialement.
0
pulls Messages postés 136 Date d'inscription mercredi 30 décembre 2009 Statut Membre Dernière intervention 13 septembre 2023 3
14 sept. 2016 à 13:27
Une 2 ème question s'il vous plait. Je ne sais pas si elle est bête, si le formulaire de mon application était connectée à une Vue, c'est la vue que je dois indexer ou la table sur laquelle la vue est construite?

merci
0
Utilisateur anonyme
14 sept. 2016 à 20:11
Bonjour,

il faut indexer les champs sur lesquels tu fais des recherches, dans les tables...

A+
0
pulls Messages postés 136 Date d'inscription mercredi 30 décembre 2009 Statut Membre Dernière intervention 13 septembre 2023 3
15 sept. 2016 à 10:52
Bonjour,

Merci pour tout.
0