2011-07-21 4 views
1

Une partie de mon travail est le contrôle qualité pour les données de certains serveurs SQL distants. Et je ne suis autorisé à interroger les données.Demander les dernières données à partir d'une énorme quantité de données

Chaque jour, je dois exécuter des scripts SQL pour interroger les données dans chaque colonne de chaque table. Ces tables contiennent des données collectées par certains programmes jour après jour. J'ai seulement besoin d'interroger les données au cours de la dernière semaine. Comme l'énorme quantité de données et pas tous les champs sont indexés, certains de mes requêtes expirent toujours.

Quelqu'un a-t-il une bonne idée pour m'aider? Vraiment apprécié.

+0

Vous pourriez être pas de chance ici - en dehors d'une gamme limitée de requêtes, SQL Server va tirer toutes les données du serveur distant, puis appliquer le filtre (WHERE) localement. Je ne me souviens pas à quel point cela est documenté. –

Répondre

2

utiliser une clause WHERE sur votre requête qui filtre les données de la semaine dernière seulement et

Demande d'un index sur toutes les colonnes u veulent accéder ...

+0

C'est exactement ce que je fais, sauf l'index ... On me demande d'interroger tous les champs, comme par exemple le nombre de la chaîne vide ou les valeurs NULL de chaque colonne, mais est-ce correct de créer un index sur tous les champs? des champs? – Soony

+0

vous devez ajouter un index uniquement sur les champs que vous utilisez dans votre clause 'where' ... Passez en revue chacune de vos requêtes ... sortez tout de votre clause where et créez un index non clusterisé sur ce ... Si vous joignez plusieurs tables ... les champs de conditions de jointure auxquels vous avez accédé ont besoin d'un index de préférence groupé. – Mulki

+0

Merci, je pense qu'il n'y a pas de meilleure façon de faire face à cela. Je prévois de demander à l'administrateur de base de données de mon client d'ajouter un index pour ces champs. – Soony

0

limite d'utilisation, puis par ordre l'heure de la date est descendue.

SELECT * FROM employee ORDER BY ID DESC LIMIT 100 
+0

Merci pour votre aide. Mais j'ai peur que 'LIMIT' ne fonctionne pas dans SQLServer 2005. – Soony

Questions connexes