Accès rapide aux données dans une table [Résolu/Fermé]

Signaler
Messages postés
131
Date d'inscription
mercredi 30 décembre 2009
Statut
Membre
Dernière intervention
24 mars 2020
-
Messages postés
131
Date d'inscription
mercredi 30 décembre 2009
Statut
Membre
Dernière intervention
24 mars 2020
-
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

Messages postés
1146
Date d'inscription
lundi 10 mai 2010
Statut
Membre
Dernière intervention
28 octobre 2020
93
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 :)
Messages postés
131
Date d'inscription
mercredi 30 décembre 2009
Statut
Membre
Dernière intervention
24 mars 2020
3
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.

Bonjour,

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

Quels sont les index ?

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

A+
Messages postés
131
Date d'inscription
mercredi 30 décembre 2009
Statut
Membre
Dernière intervention
24 mars 2020
3
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
Messages postés
30356
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 novembre 2020
3 029
Bonjour,

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



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 :)

Messages postés
131
Date d'inscription
mercredi 30 décembre 2009
Statut
Membre
Dernière intervention
24 mars 2020
3
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
Utilisateur anonyme
Salut,

cool !!!

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

A+
Utilisateur anonyme
Je mets ta question initiale "résolue"...
Messages postés
131
Date d'inscription
mercredi 30 décembre 2009
Statut
Membre
Dernière intervention
24 mars 2020
3
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.
Messages postés
131
Date d'inscription
mercredi 30 décembre 2009
Statut
Membre
Dernière intervention
24 mars 2020
3
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

Bonjour,

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

A+
Messages postés
131
Date d'inscription
mercredi 30 décembre 2009
Statut
Membre
Dernière intervention
24 mars 2020
3
Bonjour,

Merci pour tout.