Signaler

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

Posez votre question pulls 97Messages postés mercredi 30 décembre 2009Date d'inscription 15 septembre 2016 Dernière intervention - Dernière réponse le 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 
Utile
+0
moins plus
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 :)
Ajouter un commentaire
Utile
+0
moins plus
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.
Ajouter un commentaire
Utile
+0
moins plus
Bonjour,

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

Quels sont les index ?

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

A+
Ajouter un commentaire
Utile
+0
moins plus
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
Ajouter un commentaire
Utile
+0
moins plus
Bonjour,

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


Ajouter un commentaire
Utile
+0
moins plus
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 :)

Ajouter un commentaire
Utile
+0
moins plus
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
HDU 2040Messages postés mardi 11 février 2003Date d'inscription ContributeurStatut 24 septembre 2016 Dernière intervention - 14 sept. 2016 à 00:37
Salut,

cool !!!

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

A+
Répondre
HDU 2040Messages postés mardi 11 février 2003Date d'inscription ContributeurStatut 24 septembre 2016 Dernière intervention - 14 sept. 2016 à 00:41
Je mets ta question initiale "résolue"...
Répondre
Ajouter un commentaire
Utile
+0
moins plus
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.
Ajouter un commentaire
Utile
+0
moins plus
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
Ajouter un commentaire
Utile
+0
moins plus
Bonjour,

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

A+
Ajouter un commentaire
Utile
+0
moins plus
Bonjour,

Merci pour tout.
Ajouter un commentaire

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !