none
Optimiser l’exécution des requête (SQL SERVER ou DATASET ) ?? RRS feed

  • Question

  •  

    Bonjour

    Je souhaite développer une application Client Serveur avec SQL SERVEUR 2005 qui traite un nombre Important de données

    J’utilise VS2008 & SQL SERVER 2005

     

    Ma question :

     

    pour optimiser l’exécution de mes requêtes  Le mieux à faire est  :

     

    -De les écrire dans  SQL SERVEUR sous forme de Vues, puis les utiliser dans mon DATASET ??Pourquoi ??

    -Ou bien épargner SQL SERVER  (ne pas faire de Vues) et les Ecrire dans le DATASET ??Pourquoi??

     

    Merci de vouloir aider

     

    Salutations

    samedi 8 novembre 2008 02:21

Réponses

  • Si mes souvenirs sont encore bons, SQL Server est fourni avec un outil qui donne de manière graphique le plan d'exécution des requêtes.

     

    Utilisez cet outil pour détecté les "Table Scan" dans votre plan d'exécution et en fonction de ceci, ajoutez les index qui permettrons de ne plus faire de "Table Scan".

    Ceci est une méthode générique, je n'ai pas vraiment les compétences de DBA nécessaire pour faire beaucoup plus mais généralement cela marche très bien.

     

    mardi 18 novembre 2008 01:04

Toutes les réponses

  • Bonjour,

     

    Cela rejoint au même...

    Une vue n'est qu'une requête "nommée". On utilise le plus souvent les vues pour "masquer" les tables d'un SGBD...

     

    Cordialement

    samedi 8 novembre 2008 08:10
    Modérateur
  •  

    Bonjour

    Mon Probleme et le suivant:

    J’utilise : SQL SERVER 2005/VS 2008/VB.Net :

    J’ai  comme table (InputFile) qui comporte un champs NumSerie

    Exemple :

    NumSerie

    1001

    1002

    1003

    1004

    1005

    1052

    1053

    1054

    1055

    1056

    1057

    20100

    20101

    20102

    20103

    20104

    20105

    20106

    20107

    20108

     

    Pour avoir mes numéros de série comme suit (First last Quantité):

    First

    Last

    Quantité

    1001

    1005

    5

    1052

    1057

    6

    20100

    20108

    9

     

    J’utilise la Requête :

    Code Snippet

    SELECT     MIN(NumSerie) AS First, MAX(NumSerie) AS Last, COUNT(NumSerie) AS Quantité

    FROM         (SELECT     TOP (100) PERCENT NumSerie, NumSerie -

                                                      (SELECT     COUNT(NumSerie) AS Expr1

                                                        FROM          dbo.InputFile AS Table_Alias2

                                                        WHERE      (NumSerie < dbo.InputFile.NumSerie)) + 1 AS Dis

                           FROM          dbo.InputFile) AS Tble_1

    GROUP BY Dis

     

     

    Cette requête s’exécute Correctement avec des petit Nombre de Données  de l’ordre de quelque Milliers

    Mais dés que les données deviennent plus ou moins important (Moins de Centaine de milliers)

    L’exception suivante se génère

    Expiration du délai d'attente. Le délai d'attente s'est écoulé avant la fin de l'opération ou le serveur ne répond pas.

    Que dois-je faire pour avoir les mêmes résultats que pour les petits volumes de données ??

    -Pourquoi cette Exception ??

    -Y-A-Il un moyen de prolonger le temps de traitement de données par exemple ?

    -Y-A-Il une requête Moins Complexe Pour avoir les mêmes  Résultats (First last Quantité) ??

    Merci de vouloir aider.

     

    samedi 15 novembre 2008 18:47
  • Si mes souvenirs sont encore bons, SQL Server est fourni avec un outil qui donne de manière graphique le plan d'exécution des requêtes.

     

    Utilisez cet outil pour détecté les "Table Scan" dans votre plan d'exécution et en fonction de ceci, ajoutez les index qui permettrons de ne plus faire de "Table Scan".

    Ceci est une méthode générique, je n'ai pas vraiment les compétences de DBA nécessaire pour faire beaucoup plus mais généralement cela marche très bien.

     

    mardi 18 novembre 2008 01:04