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

Messages postés
129
Date d'inscription
mercredi 30 décembre 2009
Statut
Membre
Dernière intervention
25 mars 2019
- - Dernière réponse : pulls
Messages postés
129
Date d'inscription
mercredi 30 décembre 2009
Statut
Membre
Dernière intervention
25 mars 2019
- 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


Afficher la suite 

11 réponses

Messages postés
1145
Date d'inscription
lundi 10 mai 2010
Statut
Membre
Dernière intervention
26 mars 2019
69
0
Merci
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
129
Date d'inscription
mercredi 30 décembre 2009
Statut
Membre
Dernière intervention
25 mars 2019
2
0
Merci
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
Merci
Bonjour,

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

Quels sont les index ?

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

A+
Messages postés
129
Date d'inscription
mercredi 30 décembre 2009
Statut
Membre
Dernière intervention
25 mars 2019
2
0
Merci
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
26750
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 novembre 2019
1878
0
Merci
Bonjour,

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


0
Merci
Pour faire simple,

crées un index sur ton champs num_ticket, en t'inspirant de ceci:
http://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
129
Date d'inscription
mercredi 30 décembre 2009
Statut
Membre
Dernière intervention
25 mars 2019
2
0
Merci
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
129
Date d'inscription
mercredi 30 décembre 2009
Statut
Membre
Dernière intervention
25 mars 2019
2
0
Merci
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
129
Date d'inscription
mercredi 30 décembre 2009
Statut
Membre
Dernière intervention
25 mars 2019
2
0
Merci
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
Merci
Bonjour,

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

A+
Messages postés
129
Date d'inscription
mercredi 30 décembre 2009
Statut
Membre
Dernière intervention
25 mars 2019
2
0
Merci
Bonjour,

Merci pour tout.