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

Développement SQL Server Discussion :

Comment enlever le convert dans le where ? [2014]


Sujet :

Développement SQL Server

  1. #1
    Membre habitué Avatar de olivtone
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2010
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 242
    Points : 153
    Points
    153
    Par défaut Comment enlever le convert dans le where ?
    Bonjour a Tous

    N'etant pas encore un professionnel en TSQL, mon but c'est de reecrire cette requete pour qu'il me prend l'index clustered qui est sur la colonne

    CEN_ID. je pourrai ecrire la requete sans le CAST cela marcherait, mais je voulais savoir comment je pourrai garder ce CAST en prenant bien la

    colonne CEN_ID, et donc l'index clustered

    Ci dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
      FROM TOTO.[dbo].[T_CENTRE_CEN]
      WHERE  (CAST (CEN_ID AS CHAR(3))=2)
    merci a vous

  2. #2
    Invité
    Invité(e)
    Par défaut
    Peux-tu nous fournir la DDL de la table, s'il te plait.

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Quel est le type de la colonne CEN_ID ?

    CAST (CEN_ID AS CHAR(3)) va retourner un CHAR(3) qui sera converti en numérique pour être comparé à 2.

    S'il doit y avoir un conversion de type, elle devrait au moins être effectuée dans l'autre sens, pour poser le test ainsi :
    CEN_ID = CAST (2 AS <type de CEN_ID>)
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  4. #4
    Membre du Club
    Homme Profil pro
    SQL Server
    Inscrit en
    Juin 2010
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : SQL Server
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2010
    Messages : 43
    Points : 63
    Points
    63
    Par défaut
    Bonjour
    Il est possible que si l'index existe déjà et qu'il n'est pas utilisé vient que cela vienne du cast.
    Car même si la colonne est indexée, le fait de faire un changement de type dessus peut empêcher l'utilisation d'index.

    Ensuite, pour forcer l'utilisation d'un index :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
      FROM TOTO.[dbo].[T_CENTRE_CEN] WITH (INDEX = NomDeMonIndex)
      WHERE  (CAST (CEN_ID AS CHAR(3))=2)

  5. #5
    Membre habitué Avatar de olivtone
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2010
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 242
    Points : 153
    Points
    153
    Par défaut
    Excellent !!

    SELECT *
    FROM [PRE-SITES-WEB].[dbo].[T_CENTRE_CEN]
    WHERE CEN_ID= CAST (2 AS CHAR(3))


    Prend bien l'index Clustered tout en convertissant la valeur , j'ai appris un truc today

    L'option WITH INDEX aussi peut etre utile j'avoue

    Merci A Tous !!!

  6. #6
    Membre habitué Avatar de olivtone
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2010
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 242
    Points : 153
    Points
    153
    Par défaut
    Avez vous des sites ou il y a des TIPS a apprendre concernant l'amelioration des requetes SQL ?

    merci a vous

  7. #7
    Membre expérimenté

    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2014
    Messages
    815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 815
    Points : 1 350
    Points
    1 350
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par olivtone Voir le message
    Avez vous des sites ou il y a des TIPS a apprendre concernant l'amelioration des requetes SQL ?

    merci a vous
    juste une petit remarque con cernons vos requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
      FROM TOTO.[dbo].[T_CENTRE_CEN]
      WHERE  (CAST (CEN_ID AS CHAR(3))=2)
    évitez d'employer l'étoile dans la clause SELECT et essayer de nommer les colonnes une à une ce ci va permet d'assurer la couverture de vos requête et minimiser le coût de l'opération scan table
    un bon article sur ce sujet mis par SQLpro http://sqlpro.developpez.com/cours/optimiser/

  8. #8
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 770
    Points : 52 726
    Points
    52 726
    Billets dans le blog
    5
    Par défaut
    Ce serait encore plus rapide avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM [PRE-SITES-WEB].[dbo].[T_CENTRE_CEN]
    WHERE  CEN_ID= '2'

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment enlever les accents dans un nom de fichiers ?
    Par clavier12AZQSWX dans le forum Administration système
    Réponses: 6
    Dernier message: 23/09/2009, 06h47
  2. Convert dans le where
    Par ririch dans le forum Développement
    Réponses: 19
    Dernier message: 23/06/2009, 10h05
  3. Réponses: 5
    Dernier message: 17/04/2008, 14h45
  4. [Access] comment mettre plusieurs critères dans le WHERE ?
    Par Marie_2116 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 18/07/2007, 12h53
  5. comment enlever les chemin dans l url
    Par chouchou93 dans le forum Struts 1
    Réponses: 5
    Dernier message: 13/06/2006, 15h52

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