IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

optimisation query avec BETWEEN


Sujet :

MS SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 133
    Points : 54
    Points
    54
    Par défaut optimisation query avec BETWEEN
    Bonjour,

    jai la clause suivante:

    select Val from Table where Date between DATEA and DATEB

    DATEA est ma borne inferieure et DATEB superieure. Note: Table est une enorme table avec des millions de records

    ma question: y a-t-il une difference si jinterchange DATEA et DATEB dans ma clause?

    je semble en voir une dans mes resultats mais je ne comprends pas cette difference syntaxiquement. Je semble aussi voir une grosse difference en terme de performance entre les 2 options. Et celle qui ma lair plus rapide ne semble pas retourner les resultats escomptes , lautre si.

    en passant jutilise un index clustered sur mes date de ma table et ma table est fraichement "defragée"

    Merci a lavance

  2. #2
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Bonjour,

    Citation Envoyé par maxtin
    Je semble aussi voir une grosse difference en terme de performance entre les 2 options. Et celle qui ma lair plus rapide ne semble pas retourner les resultats escomptes , lautre si.
    Ce que je ne comprends pas, c'est comment l'inversion des dates te retourne même un seul résultat...
    La valeur de gauche doit être inférieure à la valeur de droite.
    Démo :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    CREATE TABLE #tmp (quandDonc datetime)
     
    INSERT INTO #tmp VALUES (current_timestamp)
     
    SELECT * 
    FROM #tmp 
    WHERE quandDonc BETWEEN DATEADD(day, -1, current_timestamp) AND DATEADD(day, 1, current_timestamp)
     
    SELECT * 
    FROM #tmp 
    WHERE quandDonc BETWEEN DATEADD(day, 1, current_timestamp) AND DATEADD(day, -1, current_timestamp)
     
    DROP TABLE #tmp
    Rudi Bruchez
    Rudi Bruchez EIRL, solutions MS SQL Server et NoSQL
    LinkedIn - [Outil libre de diagnostic SQL Server : Sql Trismegiste]
    LIVRES : Optimiser SQL Server -
    Microsoft SQL Server 2012 Security Cookbook
    - les bases de données NoSQL

    e-learning : LinkedIn Learning - Pluralsight

  3. #3
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 133
    Points : 54
    Points
    54
    Par défaut
    merci de ta reponse


    moi aussi je ne comprends pas pourquoi linverse me retourne quelquechose

  4. #4
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Quelles sont les valeurs ?
    Rudi Bruchez
    Rudi Bruchez EIRL, solutions MS SQL Server et NoSQL
    LinkedIn - [Outil libre de diagnostic SQL Server : Sql Trismegiste]
    LIVRES : Optimiser SQL Server -
    Microsoft SQL Server 2012 Security Cookbook
    - les bases de données NoSQL

    e-learning : LinkedIn Learning - Pluralsight

  5. #5
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 133
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par rudib
    Quelles sont les valeurs ?

    presentement, je suis dans limposssibilite de te repondre car je ne suis plus au travail, mais je me souviens que les valeurs etaient tres simillaires mais differentes. Cette similitude mintrigue toujours, car jaurais penser que les valeurs auraient ete largement differentes.

    Le plus etrange est que cette query (inversee) est plus rapide que la bonne...pourtant elle doit composer avec plus de records que lautre (si je comprends bien la difference syntaxique entre les 2 querys)

    je te donne des nouvelles plus tard

  6. #6
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Merci de poster le DDL de ta table, le code que tu lances avec les valeurs. On pourra tester. Pour l'instant, quand tu dis "elle doit composer avec plus de records", je ne comprends pas bien ce que tu entends.
    Rudi Bruchez
    Rudi Bruchez EIRL, solutions MS SQL Server et NoSQL
    LinkedIn - [Outil libre de diagnostic SQL Server : Sql Trismegiste]
    LIVRES : Optimiser SQL Server -
    Microsoft SQL Server 2012 Security Cookbook
    - les bases de données NoSQL

    e-learning : LinkedIn Learning - Pluralsight

Discussions similaires

  1. query avec condition 'between entre 2 dates'
    Par EtudiantJ2EE dans le forum iReport
    Réponses: 0
    Dernier message: 07/03/2012, 11h18
  2. Problème avec Between dans un code
    Par Sendo dans le forum Access
    Réponses: 4
    Dernier message: 02/10/2005, 18h44
  3. Optimisation requete avec sous-requetes multiples
    Par gege.boubou dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/09/2005, 10h42
  4. optimisation requetes avec base de données
    Par flogreg dans le forum Décisions SGBD
    Réponses: 9
    Dernier message: 05/07/2005, 14h54
  5. Optimisation HTML avec Tomcat
    Par zekey dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 23/03/2005, 12h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo