PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Forums Hébergement > Forum Hébergement serveur > ms.public.fr.sqlserver > Probleme de perfs sur une requête
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
Probleme de perfs sur une requête

Réponse
 
LinkBack Outils de la discussion
Vieux 09/08/2007, 16h52   #1
Brigitte
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Probleme de perfs sur une requête

Bonjour,

Comment peut-on expliquer que ces deux requêtes ont un temps d'exécution
totalement différent :

SELECT DISTINCT PROFIL_ID, POSBT.SICOVAM, POSBT.FAIRVALUE, PRIX.THEO,
POS.FAIRVALUE, POSBT.QUANTITY, POSBT.COD_PORT, POSBT.COD_DEVISE, '20070806',
GETDATE()
FROM IMP_VAR_DETAIL_POS_BT_CORRIGE POSBT, REF_PORT_SOURCE_HISTORIQUE RPS,
IMP_SOPH_PRIX PRIX, IMP_VAR_DETAIL_POS_GEN_CORRIGE POS
WHERE RPS.DAT_PRO_UTIL = '20070806'
AND POSBT.DAT_PRO = '20070806'
AND PRIX.DAT_PRO = '20070806'
AND POS.DAT_PRO = '20070806'
AND SOURCE = 'SOPHIS'
AND POSBT.COD_PORT = RPS.COD_PORT
AND POSBT.SICOVAM *= SIC_INSTR
AND POSBT.QUANTITY <> 0
AND POSBT.COD_PORT = POS.COD_PORT
AND POSBT.SICOVAM = POS.SICOVAM
AND POSBT.QUANTITY = POS.QUANTITY

DECLARE @DAT_PRO varchar(8)
SELECT @DAT_PRO = '20070806'

SELECT DISTINCT PROFIL_ID, POSBT.SICOVAM, POSBT.FAIRVALUE, PRIX.THEO,
POS.FAIRVALUE, POSBT.QUANTITY, POSBT.COD_PORT, POSBT.COD_DEVISE, '20070806',
GETDATE()
FROM IMP_VAR_DETAIL_POS_BT_CORRIGE POSBT, REF_PORT_SOURCE_HISTORIQUE RPS,
IMP_SOPH_PRIX PRIX, IMP_VAR_DETAIL_POS_GEN_CORRIGE POS
WHERE RPS.DAT_PRO_UTIL = @DAT_PRO
AND POSBT.DAT_PRO = @DAT_PRO
AND PRIX.DAT_PRO = @DAT_PRO
AND POS.DAT_PRO = @DAT_PRO
AND SOURCE = 'SOPHIS'
AND POSBT.COD_PORT = RPS.COD_PORT
AND POSBT.SICOVAM *= SIC_INSTR
AND POSBT.QUANTITY <> 0
AND POSBT.COD_PORT = POS.COD_PORT
AND POSBT.SICOVAM = POS.SICOVAM
AND POSBT.QUANTITY = POS.QUANTITY

merci

Bonne journée

Brigitte
  Réponse avec citation
Vieux 09/08/2007, 17h27   #2
Jean-Pierre Riehl
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Probleme de perfs sur une requête

Bonjour,

Ces 2 requêtes sont-elles appelées depuis une procédure stockée, une
instruction sp_executesql ou depuis une commande préparée ?
L'utilisation de variables locales dans un script peut influer sur
l'optimiseur de requête quand il la compile.


--
Jean-Pierre Riehl
http://blog.djeepy1.net
http://www.bewise.fr


"Brigitte" <Brigitte@discussions.microsoft.com> wrote in message
news:C3A08940-FD3D-4BB8-B52A-8617ECACE9D9@microsoft.com...
> Bonjour,
>
> Comment peut-on expliquer que ces deux requêtes ont un temps d'exécution
> totalement différent :
>
> SELECT DISTINCT PROFIL_ID, POSBT.SICOVAM, POSBT.FAIRVALUE, PRIX.THEO,
> POS.FAIRVALUE, POSBT.QUANTITY, POSBT.COD_PORT, POSBT.COD_DEVISE,
> '20070806',
> GETDATE()
> FROM IMP_VAR_DETAIL_POS_BT_CORRIGE POSBT, REF_PORT_SOURCE_HISTORIQUE RPS,
> IMP_SOPH_PRIX PRIX, IMP_VAR_DETAIL_POS_GEN_CORRIGE POS
> WHERE RPS.DAT_PRO_UTIL = '20070806'
> AND POSBT.DAT_PRO = '20070806'
> AND PRIX.DAT_PRO = '20070806'
> AND POS.DAT_PRO = '20070806'
> AND SOURCE = 'SOPHIS'
> AND POSBT.COD_PORT = RPS.COD_PORT
> AND POSBT.SICOVAM *= SIC_INSTR
> AND POSBT.QUANTITY <> 0
> AND POSBT.COD_PORT = POS.COD_PORT
> AND POSBT.SICOVAM = POS.SICOVAM
> AND POSBT.QUANTITY = POS.QUANTITY
>
> DECLARE @DAT_PRO varchar(8)
> SELECT @DAT_PRO = '20070806'
>
> SELECT DISTINCT PROFIL_ID, POSBT.SICOVAM, POSBT.FAIRVALUE, PRIX.THEO,
> POS.FAIRVALUE, POSBT.QUANTITY, POSBT.COD_PORT, POSBT.COD_DEVISE,
> '20070806',
> GETDATE()
> FROM IMP_VAR_DETAIL_POS_BT_CORRIGE POSBT, REF_PORT_SOURCE_HISTORIQUE RPS,
> IMP_SOPH_PRIX PRIX, IMP_VAR_DETAIL_POS_GEN_CORRIGE POS
> WHERE RPS.DAT_PRO_UTIL = @DAT_PRO
> AND POSBT.DAT_PRO = @DAT_PRO
> AND PRIX.DAT_PRO = @DAT_PRO
> AND POS.DAT_PRO = @DAT_PRO
> AND SOURCE = 'SOPHIS'
> AND POSBT.COD_PORT = RPS.COD_PORT
> AND POSBT.SICOVAM *= SIC_INSTR
> AND POSBT.QUANTITY <> 0
> AND POSBT.COD_PORT = POS.COD_PORT
> AND POSBT.SICOVAM = POS.SICOVAM
> AND POSBT.QUANTITY = POS.QUANTITY
>
> merci
>
> Bonne journée
>
> Brigitte


  Réponse avec citation
Vieux 09/08/2007, 17h38   #3
Brigitte
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Probleme de perfs sur une requête

Par query analyser.

Merci

Brigitte

"Jean-Pierre Riehl" a écrit :

> Bonjour,
>
> Ces 2 requêtes sont-elles appelées depuis une procédure stockée, une
> instruction sp_executesql ou depuis une commande préparée ?
> L'utilisation de variables locales dans un script peut influer sur
> l'optimiseur de requête quand il la compile.
>
>
> --
> Jean-Pierre Riehl
> http://blog.djeepy1.net
> http://www.bewise.fr
>
>
> "Brigitte" <Brigitte@discussions.microsoft.com> wrote in message
> news:C3A08940-FD3D-4BB8-B52A-8617ECACE9D9@microsoft.com...
> > Bonjour,
> >
> > Comment peut-on expliquer que ces deux requêtes ont un temps d'exécution
> > totalement différent :
> >
> > SELECT DISTINCT PROFIL_ID, POSBT.SICOVAM, POSBT.FAIRVALUE, PRIX.THEO,
> > POS.FAIRVALUE, POSBT.QUANTITY, POSBT.COD_PORT, POSBT.COD_DEVISE,
> > '20070806',
> > GETDATE()
> > FROM IMP_VAR_DETAIL_POS_BT_CORRIGE POSBT, REF_PORT_SOURCE_HISTORIQUE RPS,
> > IMP_SOPH_PRIX PRIX, IMP_VAR_DETAIL_POS_GEN_CORRIGE POS
> > WHERE RPS.DAT_PRO_UTIL = '20070806'
> > AND POSBT.DAT_PRO = '20070806'
> > AND PRIX.DAT_PRO = '20070806'
> > AND POS.DAT_PRO = '20070806'
> > AND SOURCE = 'SOPHIS'
> > AND POSBT.COD_PORT = RPS.COD_PORT
> > AND POSBT.SICOVAM *= SIC_INSTR
> > AND POSBT.QUANTITY <> 0
> > AND POSBT.COD_PORT = POS.COD_PORT
> > AND POSBT.SICOVAM = POS.SICOVAM
> > AND POSBT.QUANTITY = POS.QUANTITY
> >
> > DECLARE @DAT_PRO varchar(8)
> > SELECT @DAT_PRO = '20070806'
> >
> > SELECT DISTINCT PROFIL_ID, POSBT.SICOVAM, POSBT.FAIRVALUE, PRIX.THEO,
> > POS.FAIRVALUE, POSBT.QUANTITY, POSBT.COD_PORT, POSBT.COD_DEVISE,
> > '20070806',
> > GETDATE()
> > FROM IMP_VAR_DETAIL_POS_BT_CORRIGE POSBT, REF_PORT_SOURCE_HISTORIQUE RPS,
> > IMP_SOPH_PRIX PRIX, IMP_VAR_DETAIL_POS_GEN_CORRIGE POS
> > WHERE RPS.DAT_PRO_UTIL = @DAT_PRO
> > AND POSBT.DAT_PRO = @DAT_PRO
> > AND PRIX.DAT_PRO = @DAT_PRO
> > AND POS.DAT_PRO = @DAT_PRO
> > AND SOURCE = 'SOPHIS'
> > AND POSBT.COD_PORT = RPS.COD_PORT
> > AND POSBT.SICOVAM *= SIC_INSTR
> > AND POSBT.QUANTITY <> 0
> > AND POSBT.COD_PORT = POS.COD_PORT
> > AND POSBT.SICOVAM = POS.SICOVAM
> > AND POSBT.QUANTITY = POS.QUANTITY
> >
> > merci
> >
> > Bonne journée
> >
> > Brigitte

>

  Réponse avec citation
Vieux 09/08/2007, 17h40   #4
Brigitte
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Probleme de perfs sur une requête

Pas dans une stored proc

"Jean-Pierre Riehl" a écrit :

> Bonjour,
>
> Ces 2 requêtes sont-elles appelées depuis une procédure stockée, une
> instruction sp_executesql ou depuis une commande préparée ?
> L'utilisation de variables locales dans un script peut influer sur
> l'optimiseur de requête quand il la compile.
>
>
> --
> Jean-Pierre Riehl
> http://blog.djeepy1.net
> http://www.bewise.fr
>
>
> "Brigitte" <Brigitte@discussions.microsoft.com> wrote in message
> news:C3A08940-FD3D-4BB8-B52A-8617ECACE9D9@microsoft.com...
> > Bonjour,
> >
> > Comment peut-on expliquer que ces deux requêtes ont un temps d'exécution
> > totalement différent :
> >
> > SELECT DISTINCT PROFIL_ID, POSBT.SICOVAM, POSBT.FAIRVALUE, PRIX.THEO,
> > POS.FAIRVALUE, POSBT.QUANTITY, POSBT.COD_PORT, POSBT.COD_DEVISE,
> > '20070806',
> > GETDATE()
> > FROM IMP_VAR_DETAIL_POS_BT_CORRIGE POSBT, REF_PORT_SOURCE_HISTORIQUE RPS,
> > IMP_SOPH_PRIX PRIX, IMP_VAR_DETAIL_POS_GEN_CORRIGE POS
> > WHERE RPS.DAT_PRO_UTIL = '20070806'
> > AND POSBT.DAT_PRO = '20070806'
> > AND PRIX.DAT_PRO = '20070806'
> > AND POS.DAT_PRO = '20070806'
> > AND SOURCE = 'SOPHIS'
> > AND POSBT.COD_PORT = RPS.COD_PORT
> > AND POSBT.SICOVAM *= SIC_INSTR
> > AND POSBT.QUANTITY <> 0
> > AND POSBT.COD_PORT = POS.COD_PORT
> > AND POSBT.SICOVAM = POS.SICOVAM
> > AND POSBT.QUANTITY = POS.QUANTITY
> >
> > DECLARE @DAT_PRO varchar(8)
> > SELECT @DAT_PRO = '20070806'
> >
> > SELECT DISTINCT PROFIL_ID, POSBT.SICOVAM, POSBT.FAIRVALUE, PRIX.THEO,
> > POS.FAIRVALUE, POSBT.QUANTITY, POSBT.COD_PORT, POSBT.COD_DEVISE,
> > '20070806',
> > GETDATE()
> > FROM IMP_VAR_DETAIL_POS_BT_CORRIGE POSBT, REF_PORT_SOURCE_HISTORIQUE RPS,
> > IMP_SOPH_PRIX PRIX, IMP_VAR_DETAIL_POS_GEN_CORRIGE POS
> > WHERE RPS.DAT_PRO_UTIL = @DAT_PRO
> > AND POSBT.DAT_PRO = @DAT_PRO
> > AND PRIX.DAT_PRO = @DAT_PRO
> > AND POS.DAT_PRO = @DAT_PRO
> > AND SOURCE = 'SOPHIS'
> > AND POSBT.COD_PORT = RPS.COD_PORT
> > AND POSBT.SICOVAM *= SIC_INSTR
> > AND POSBT.QUANTITY <> 0
> > AND POSBT.COD_PORT = POS.COD_PORT
> > AND POSBT.SICOVAM = POS.SICOVAM
> > AND POSBT.QUANTITY = POS.QUANTITY
> >
> > merci
> >
> > Bonne journée
> >
> > Brigitte

>

  Réponse avec citation
Vieux 09/08/2007, 18h18   #5
bruno reiter
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Probleme de perfs sur une requête

as-tu regardé les plans d'exec, stats time et stats I/O ?

br

"Brigitte" <Brigitte@discussions.microsoft.com> wrote in message
news:C3A08940-FD3D-4BB8-B52A-8617ECACE9D9@microsoft.com...
> Bonjour,
>
> Comment peut-on expliquer que ces deux requêtes ont un temps d'exécution
> totalement différent :
>
> SELECT DISTINCT PROFIL_ID, POSBT.SICOVAM, POSBT.FAIRVALUE, PRIX.THEO,
> POS.FAIRVALUE, POSBT.QUANTITY, POSBT.COD_PORT, POSBT.COD_DEVISE,
> '20070806',
> GETDATE()
> FROM IMP_VAR_DETAIL_POS_BT_CORRIGE POSBT, REF_PORT_SOURCE_HISTORIQUE RPS,
> IMP_SOPH_PRIX PRIX, IMP_VAR_DETAIL_POS_GEN_CORRIGE POS
> WHERE RPS.DAT_PRO_UTIL = '20070806'
> AND POSBT.DAT_PRO = '20070806'
> AND PRIX.DAT_PRO = '20070806'
> AND POS.DAT_PRO = '20070806'
> AND SOURCE = 'SOPHIS'
> AND POSBT.COD_PORT = RPS.COD_PORT
> AND POSBT.SICOVAM *= SIC_INSTR
> AND POSBT.QUANTITY <> 0
> AND POSBT.COD_PORT = POS.COD_PORT
> AND POSBT.SICOVAM = POS.SICOVAM
> AND POSBT.QUANTITY = POS.QUANTITY
>
> DECLARE @DAT_PRO varchar(8)
> SELECT @DAT_PRO = '20070806'
>
> SELECT DISTINCT PROFIL_ID, POSBT.SICOVAM, POSBT.FAIRVALUE, PRIX.THEO,
> POS.FAIRVALUE, POSBT.QUANTITY, POSBT.COD_PORT, POSBT.COD_DEVISE,
> '20070806',
> GETDATE()
> FROM IMP_VAR_DETAIL_POS_BT_CORRIGE POSBT, REF_PORT_SOURCE_HISTORIQUE RPS,
> IMP_SOPH_PRIX PRIX, IMP_VAR_DETAIL_POS_GEN_CORRIGE POS
> WHERE RPS.DAT_PRO_UTIL = @DAT_PRO
> AND POSBT.DAT_PRO = @DAT_PRO
> AND PRIX.DAT_PRO = @DAT_PRO
> AND POS.DAT_PRO = @DAT_PRO
> AND SOURCE = 'SOPHIS'
> AND POSBT.COD_PORT = RPS.COD_PORT
> AND POSBT.SICOVAM *= SIC_INSTR
> AND POSBT.QUANTITY <> 0
> AND POSBT.COD_PORT = POS.COD_PORT
> AND POSBT.SICOVAM = POS.SICOVAM
> AND POSBT.QUANTITY = POS.QUANTITY
>
> merci
>
> Bonne journée
>
> Brigitte


  Réponse avec citation
Vieux 09/08/2007, 20h58   #6
Fred BROUARD
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Probleme de perfs sur une requête

-- As tu essayé :

DECLARE @DAT_PRO DATETIME
SELECT @DAT_PRO = '20070806'

SELECT DISTINCT PROFIL_ID, POSBT.SICOVAM,
POSBT.FAIRVALUE, PRIX.THEO,
POS.FAIRVALUE, POSBT.QUANTITY, POSBT.COD_PORT,
POSBT.COD_DEVISE, @DAT_PRO, GETDATE()

FROM IMP_VAR_DETAIL_POS_BT_CORRIGE POSBT
INNER JOIN REF_PORT_SOURCE_HISTORIQUE RPS
ON POSBT.COD_PORT = RPS.COD_PORT
LEFT OUTER JOIN IMP_SOPH_PRIX PRIX
ON POSBT.SICOVAM = SIC_INSTR
INNER JOIN IMP_VAR_DETAIL_POS_GEN_CORRIGE POS
ON POSBT.COD_PORT = POS.COD_PORT
AND POSBT.SICOVAM = POS.SICOVAM
AND POSBT.QUANTITY = POS.QUANTITY

WHERE RPS.DAT_PRO_UTIL = @DAT_PRO
AND POSBT.DAT_PRO = @DAT_PRO
AND PRIX.DAT_PRO = @DAT_PRO
AND POS.DAT_PRO = @DAT_PRO
AND SOURCE = 'SOPHIS'
AND POSBT.QUANTITY <> 0

-- voire :

DECLARE @DAT_PRO DATETIME
SELECT @DAT_PRO = '20070806'

SELECT *
FROM
(
SELECT DISTINCT PROFIL_ID, POSBT.SICOVAM,
POSBT.FAIRVALUE, PRIX.THEO,
POS.FAIRVALUE, POSBT.QUANTITY, POSBT.COD_PORT,
POSBT.COD_DEVISE, @DAT_PRO, GETDATE()

FROM IMP_VAR_DETAIL_POS_BT_CORRIGE POSBT
INNER JOIN REF_PORT_SOURCE_HISTORIQUE RPS
ON POSBT.COD_PORT = RPS.COD_PORT
LEFT OUTER JOIN IMP_SOPH_PRIX PRIX
ON POSBT.SICOVAM = SIC_INSTR
INNER JOIN IMP_VAR_DETAIL_POS_GEN_CORRIGE POS
ON POSBT.COD_PORT = POS.COD_PORT
AND POSBT.SICOVAM = POS.SICOVAM
AND POSBT.QUANTITY = POS.QUANTITY

WHERE RPS.DAT_PRO_UTIL = @DAT_PRO
AND POSBT.DAT_PRO = @DAT_PRO
AND PRIX.DAT_PRO = @DAT_PRO
AND POS.DAT_PRO = @DAT_PRO
AND SOURCE = 'SOPHIS'
)
WHERE NOT POSBT.QUANTITY = 0 -- ou encore POSBT.QUANTITY <> 0



En outre, y a t-il des index sur :
Table colonnes
------------------------------- ----------------------
IMP_VAR_DETAIL_POS_BT_CORRIGE COD_PORT, SICOVAM, QUANTITY
IMP_VAR_DETAIL_POS_BT_CORRIGE DAT_PRO
IMP_VAR_DETAIL_POS_BT_CORRIGE SICOVAM

IMP_SOPH_PRIX DAT_PRO
IMP_SOPH_PRIX SIC_INSTR

IMP_VAR_DETAIL_POS_GEN_CORRIGE COD_PORT, SICOVAM, QUANTITY
IMP_VAR_DETAIL_POS_GEN_CORRIGE DAT_PRO

REF_PORT_SOURCE_HISTORIQUE DAT_PRO_UTIL
REF_PORT_SOURCE_HISTORIQUE COD_PORT


?

A +



Brigitte a écrit :
> Bonjour,
>
> Comment peut-on expliquer que ces deux requêtes ont un temps d'exécution
> totalement différent :
>
> SELECT DISTINCT PROFIL_ID, POSBT.SICOVAM, POSBT.FAIRVALUE, PRIX.THEO,
> POS.FAIRVALUE, POSBT.QUANTITY, POSBT.COD_PORT, POSBT.COD_DEVISE, '20070806',
> GETDATE()
> FROM IMP_VAR_DETAIL_POS_BT_CORRIGE POSBT, REF_PORT_SOURCE_HISTORIQUE RPS,
> IMP_SOPH_PRIX PRIX, IMP_VAR_DETAIL_POS_GEN_CORRIGE POS
> WHERE RPS.DAT_PRO_UTIL = '20070806'
> AND POSBT.DAT_PRO = '20070806'
> AND PRIX.DAT_PRO = '20070806'
> AND POS.DAT_PRO = '20070806'
> AND SOURCE = 'SOPHIS'
> AND POSBT.COD_PORT = RPS.COD_PORT
> AND POSBT.SICOVAM *= SIC_INSTR
> AND POSBT.QUANTITY <> 0
> AND POSBT.COD_PORT = POS.COD_PORT
> AND POSBT.SICOVAM = POS.SICOVAM
> AND POSBT.QUANTITY = POS.QUANTITY
>
> DECLARE @DAT_PRO varchar(8)
> SELECT @DAT_PRO = '20070806'
>
> SELECT DISTINCT PROFIL_ID, POSBT.SICOVAM, POSBT.FAIRVALUE, PRIX.THEO,
> POS.FAIRVALUE, POSBT.QUANTITY, POSBT.COD_PORT, POSBT.COD_DEVISE, '20070806',
> GETDATE()
> FROM IMP_VAR_DETAIL_POS_BT_CORRIGE POSBT, REF_PORT_SOURCE_HISTORIQUE RPS,
> IMP_SOPH_PRIX PRIX, IMP_VAR_DETAIL_POS_GEN_CORRIGE POS
> WHERE RPS.DAT_PRO_UTIL = @DAT_PRO
> AND POSBT.DAT_PRO = @DAT_PRO
> AND PRIX.DAT_PRO = @DAT_PRO
> AND POS.DAT_PRO = @DAT_PRO
> AND SOURCE = 'SOPHIS'
> AND POSBT.COD_PORT = RPS.COD_PORT
> AND POSBT.SICOVAM *= SIC_INSTR
> AND POSBT.QUANTITY <> 0
> AND POSBT.COD_PORT = POS.COD_PORT
> AND POSBT.SICOVAM = POS.SICOVAM
> AND POSBT.QUANTITY = POS.QUANTITY
>
> merci
>
> Bonne journée
>
> Brigitte



--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
  Réponse avec citation
Vieux 10/08/2007, 09h50   #7
Brigitte
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Probleme de perfs sur une requête

Merci, le temps d'exécution est passé de 25mn à 14s.
Voici les index,

> Table colonnes
> ------------------------------- ----------------------
> IMP_VAR_DETAIL_POS_BT_CORRIGE ID_VAR_DETAIL_POS_BT_CORRIGE clustered
> IMP_VAR_DETAIL_POS_BT_CORRIGE DAT_PRO, SICOVAM
> IMP_VAR_DETAIL_POS_BT_CORRIGE SICOVAM
>
> IMP_SOPH_PRIX DAT_PRO
>
> IMP_VAR_DETAIL_POS_GEN_CORRIGE ID_VAR_DETAIL_POS_GEN_CORRIGE clustered
> IMP_VAR_DETAIL_POS_GEN_CORRIGE DAT_PRO, SICOVAM
>
> REF_PORT_SOURCE_HISTORIQUE DAT_PRO_UTIL, COD_PORT, SOURCE
> REF_PORT_SOURCE_HISTORIQUE COD_PORT


Bonne journée et bon week-end

Merci

Brigitte
"Fred BROUARD" a écrit :

> -- As tu essayé :
>
> DECLARE @DAT_PRO DATETIME
> SELECT @DAT_PRO = '20070806'
>
> SELECT DISTINCT PROFIL_ID, POSBT.SICOVAM,
> POSBT.FAIRVALUE, PRIX.THEO,
> POS.FAIRVALUE, POSBT.QUANTITY, POSBT.COD_PORT,
> POSBT.COD_DEVISE, @DAT_PRO, GETDATE()
>
> FROM IMP_VAR_DETAIL_POS_BT_CORRIGE POSBT
> INNER JOIN REF_PORT_SOURCE_HISTORIQUE RPS
> ON POSBT.COD_PORT = RPS.COD_PORT
> LEFT OUTER JOIN IMP_SOPH_PRIX PRIX
> ON POSBT.SICOVAM = SIC_INSTR
> INNER JOIN IMP_VAR_DETAIL_POS_GEN_CORRIGE POS
> ON POSBT.COD_PORT = POS.COD_PORT
> AND POSBT.SICOVAM = POS.SICOVAM
> AND POSBT.QUANTITY = POS.QUANTITY
>
> WHERE RPS.DAT_PRO_UTIL = @DAT_PRO
> AND POSBT.DAT_PRO = @DAT_PRO
> AND PRIX.DAT_PRO = @DAT_PRO
> AND POS.DAT_PRO = @DAT_PRO
> AND SOURCE = 'SOPHIS'
> AND POSBT.QUANTITY <> 0
>
> -- voire :
>
> DECLARE @DAT_PRO DATETIME
> SELECT @DAT_PRO = '20070806'
>
> SELECT *
> FROM
> (
> SELECT DISTINCT PROFIL_ID, POSBT.SICOVAM,
> POSBT.FAIRVALUE, PRIX.THEO,
> POS.FAIRVALUE, POSBT.QUANTITY, POSBT.COD_PORT,
> POSBT.COD_DEVISE, @DAT_PRO, GETDATE()
>
> FROM IMP_VAR_DETAIL_POS_BT_CORRIGE POSBT
> INNER JOIN REF_PORT_SOURCE_HISTORIQUE RPS
> ON POSBT.COD_PORT = RPS.COD_PORT
> LEFT OUTER JOIN IMP_SOPH_PRIX PRIX
> ON POSBT.SICOVAM = SIC_INSTR
> INNER JOIN IMP_VAR_DETAIL_POS_GEN_CORRIGE POS
> ON POSBT.COD_PORT = POS.COD_PORT
> AND POSBT.SICOVAM = POS.SICOVAM
> AND POSBT.QUANTITY = POS.QUANTITY
>
> WHERE RPS.DAT_PRO_UTIL = @DAT_PRO
> AND POSBT.DAT_PRO = @DAT_PRO
> AND PRIX.DAT_PRO = @DAT_PRO
> AND POS.DAT_PRO = @DAT_PRO
> AND SOURCE = 'SOPHIS'
> )
> WHERE NOT POSBT.QUANTITY = 0 -- ou encore POSBT.QUANTITY <> 0
>
>
>
> En outre, y a t-il des index sur :
> Table colonnes
> ------------------------------- ----------------------
> IMP_VAR_DETAIL_POS_BT_CORRIGE COD_PORT, SICOVAM, QUANTITY
> IMP_VAR_DETAIL_POS_BT_CORRIGE DAT_PRO
> IMP_VAR_DETAIL_POS_BT_CORRIGE SICOVAM
>
> IMP_SOPH_PRIX DAT_PRO
> IMP_SOPH_PRIX SIC_INSTR
>
> IMP_VAR_DETAIL_POS_GEN_CORRIGE COD_PORT, SICOVAM, QUANTITY
> IMP_VAR_DETAIL_POS_GEN_CORRIGE DAT_PRO
>
> REF_PORT_SOURCE_HISTORIQUE DAT_PRO_UTIL
> REF_PORT_SOURCE_HISTORIQUE COD_PORT
>
>
> ?
>
> A +
>
>
>
> Brigitte a écrit :
> > Bonjour,
> >
> > Comment peut-on expliquer que ces deux requêtes ont un temps d'exécution
> > totalement différent :
> >
> > SELECT DISTINCT PROFIL_ID, POSBT.SICOVAM, POSBT.FAIRVALUE, PRIX.THEO,
> > POS.FAIRVALUE, POSBT.QUANTITY, POSBT.COD_PORT, POSBT.COD_DEVISE, '20070806',
> > GETDATE()
> > FROM IMP_VAR_DETAIL_POS_BT_CORRIGE POSBT, REF_PORT_SOURCE_HISTORIQUE RPS,
> > IMP_SOPH_PRIX PRIX, IMP_VAR_DETAIL_POS_GEN_CORRIGE POS
> > WHERE RPS.DAT_PRO_UTIL = '20070806'
> > AND POSBT.DAT_PRO = '20070806'
> > AND PRIX.DAT_PRO = '20070806'
> > AND POS.DAT_PRO = '20070806'
> > AND SOURCE = 'SOPHIS'
> > AND POSBT.COD_PORT = RPS.COD_PORT
> > AND POSBT.SICOVAM *= SIC_INSTR
> > AND POSBT.QUANTITY <> 0
> > AND POSBT.COD_PORT = POS.COD_PORT
> > AND POSBT.SICOVAM = POS.SICOVAM
> > AND POSBT.QUANTITY = POS.QUANTITY
> >
> > DECLARE @DAT_PRO varchar(8)
> > SELECT @DAT_PRO = '20070806'
> >
> > SELECT DISTINCT PROFIL_ID, POSBT.SICOVAM, POSBT.FAIRVALUE, PRIX.THEO,
> > POS.FAIRVALUE, POSBT.QUANTITY, POSBT.COD_PORT, POSBT.COD_DEVISE, '20070806',
> > GETDATE()
> > FROM IMP_VAR_DETAIL_POS_BT_CORRIGE POSBT, REF_PORT_SOURCE_HISTORIQUE RPS,
> > IMP_SOPH_PRIX PRIX, IMP_VAR_DETAIL_POS_GEN_CORRIGE POS
> > WHERE RPS.DAT_PRO_UTIL = @DAT_PRO
> > AND POSBT.DAT_PRO = @DAT_PRO
> > AND PRIX.DAT_PRO = @DAT_PRO
> > AND POS.DAT_PRO = @DAT_PRO
> > AND SOURCE = 'SOPHIS'
> > AND POSBT.COD_PORT = RPS.COD_PORT
> > AND POSBT.SICOVAM *= SIC_INSTR
> > AND POSBT.QUANTITY <> 0
> > AND POSBT.COD_PORT = POS.COD_PORT
> > AND POSBT.SICOVAM = POS.SICOVAM
> > AND POSBT.QUANTITY = POS.QUANTITY
> >
> > merci
> >
> > Bonne journée
> >
> > Brigitte

>
>
> --
> Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
> Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
> Audit, conseil, expertise, formation, modélisation, tuning, optimisation
> ********************* http://www.datasapiens.com ***********************
>

  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 23h15.


Édité par : vBulletin® version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières ©2000-2008
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,25943 seconds with 15 queries