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 :

Tuning un script sql2000 en sql2005


Sujet :

MS SQL Server

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Tuning un script sql2000 en sql2005
    Bonjour,

    Je voudrais de l'aide car je dois modifier des scripts SQL2000 en SQL2005.
    Ce sont les '*=' et '=*' qui me perturbent le plus.
    Je sais qu'il faut utiliser LEFT OUTER - RIGHT OUTER JOIN, au niveau performance, qu'en pensez-vous ?

    Je suis débutant et j'aurai aimé avoir de l'aide sur ce script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    DECLARE @as_bro_id varchar(16)
     
    select	bro_orderid, bro_orderseq,	bro_remarks, bro_status, bro_date_mod,	bro_uid_mod, bro_order_from, bro_secnumber,	bro_secdescription,
    			bro_ccy1, bro_set1cstnbr, bro_set1cst_portf, bro_set1cstinst, bro_setacseq, bro_setccy,	bro_dealinst,
    			bro_cstnumber, bro_cstportf, bro_sec_expnom, bro_amount1, bro_amount2, bro_sec_actionnom, bro_sec_expprice,
    			bro_secprice1, bro_sec_actionprice, bro_secprice2, bro_fe1_disc, bro_fe2_disc, bro_sec_marge, bro_sec_expdate,
    			bro_sec_actdate, bro_sec_brok, bro_custodi, bro_sec_expamount, bro_sxcode, tds_desc1, tds_desc2, tds_cp_last,
    			tds_maturity, tds_cprate, tds_desc_rpt, pta_descint, eic_name, tac_code1, tac_code2, ssi1.ncs_number ncs_mid, ssi2.ncs_number ncs_isin,
    			ssi3.ncs_number ncs_vd, cds_namerpt, tro_descint, sro_descint, tst_trt,	dfa_descint, bro_sec_inputtype
    FROM dbo.tblbookorder bro,
         dbo.tblsecur tds,
         dbo.tblactype pta,
         dbo.tblcie eic, 
         dbo.tbltab03 tac,
         dbo.tblcodif ssi1,  --ncs
         dbo.tblcodif ssi2,  --ncs
         dbo.tblcodif ssi3,  --ncs
         dbo.tblcusact acs,
         dbo.tbltodian cds,
         dbo.tblordtype tro,
         dbo.tblordstype sro,
         dbo.tblordtstype tst,
         dbo.tblfeedisc dfa 
     
    WHERE   bro_orderid  =  @as_bro_id
    	AND  tds_number   =* bro_secnumber
    	AND  pta_code     =  bro_dealinst
    	AND  acs_customer =* bro_cstnumber
    	AND  acs_secur    =* bro_secnumber
    	AND  acs_portf    =* bro_cstportf
    	AND  acs_atype    =* bro_dealinst
    	AND  acs_ccy      =* bro_ccy1
    	AND  bro_custodi  =  cds_number 
    	AND  eic_code     =  1
    	AND  tac_code     =  10
    	AND  ssi1.ncs_sec =* bro_secnumber
    	AND  ssi1.ncs_code = "DIM"
    	AND  ssi2.ncs_sec  =* bro_secnumber
    	AND  ssi2.ncs_code = "NISI"
    	AND  ssi3.ncs_sec  =* bro_secnumber
    	AND  ssi3.ncs_code = "VD"
    	AND  bro_ort       *= tro_code
    	AND  bro_ors       *= sro_code
    	AND  bro_ort       *= tst_ort
    	AND  bro_ors       *= tst_ors
        AND ((bro_fe1_disc IS NOT NULL AND bro_fe1_disc *= dfa.dfa_code)
         OR  (bro_fe2_disc IS NOT NULL AND bro_fe2_disc *= dfa.dfa_code)
         OR  (bro_fe1_disc IS NULL AND bro_fe2_disc IS NULL AND dfa.dfa_code = 0 ))
    Merci par avance pour votre aide.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 896
    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 896
    Points : 53 126
    Points
    53 126
    Billets dans le blog
    6
    Par défaut
    ATTENTION : les jointures externes ancien style SQL Server ne donent pas les mêmes résultats que les OUTER JOIN. En fait elles sont mathématiquement fausses.
    Il faut donc les récrire une par une en vérifiant la correspondance, y compris à l'aide de sous requêtes.
    Lisez l'article que j'ai écrit à ce sujet : http://blog.developpez.com/sqlpro/p5...-et-le-nouvea/

  3. #3
    Membre émérite

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Points : 2 856
    Points
    2 856
    Par défaut
    De plus faire des jointures dans le WHERE n'est pas normalisé !

    Il faut faire les jointure dans le FROM et les filtres dans la clause WHERE

    A+

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/02/2012, 12h56
  2. Équivalence entre tables système de SQL2000 versus SQL2005
    Par DEV-10 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/06/2011, 19h02
  3. Migration SQL2000 vers SQL2005
    Par dahu17 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 22/02/2007, 10h42
  4. Passage de SQL2000 vers SQL2005
    Par dahu17 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 12/02/2007, 17h38
  5. Récupérer une base de SQL2005 vers SQL2000
    Par titlola dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 11/10/2006, 15h53

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