Salut à tous,
j'ai une requête SQL que je lance depuis Sql Serveur qui et connecté à un serveur Oracle 9i distant LinkedServeur, quand je lance cette même requête avec un paramètre direct dans OpenQuery elle prend juste 3 Seconde. Mais avec le même paramètre mais cette fois si à l'extérieur d'OpenQuery (requête paramétrer) elle prend 20 Secondes.
Je vais essayer d'être le plus possible expressif avec les deux requêtes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT * FROM OpenQuery(LinkedOracle9i, 'SELECT t.Employer_Num, t.Date,
       t.Libelle,
       b.Nom,
       SubStr(t.Lib, 7, 15) Lib_Nom,
       SubStr(t.Lib, 1, 6) Lib_Nom1,
       Sum(t.Credit) As Credit,
  FROM Table1 t, Table2 b
 WHERE t.Centre = 1001
   And t.Date = ''20181030''	
   And t.Centre = b.Centre
   And t.Canaux = ''9''
   AND t.Employer_Num = b.Employer_Num
 Group By t.Employer_Num, t.lib, b.Nom, t.Date
 Order by SubStr(t.Libe, 1, 7), t.Employer_Num')
Temps d'exécution de la requête 3 Secondes.

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
SELECT * FROM OpenQuery(LinkedOracle9i, 'SELECT t.Employer_Num, t.Date,
       t.Libelle,
       b.Nom,
       SubStr(t.Lib, 7, 15) Lib_Nom,
       SubStr(t.Lib, 1, 6) Lib_Nom1,
       Sum(t.Credit) As Credit,
  FROM Table1 t, Table2 b
 WHERE t.Centre = 1001
  -- And t.Date = ''20181030''
   And t.Centre = b.Centre
   And t.Canaux = ''9''
   AND t.Employer_Num = b.Employer_Num
 Group By t.Employer_Num, t.lib, b.Nom, t.Date
 Order by SubStr(t.Libe, 1, 7), t.Employer_Num') T1
 Where T1.Date = CONVERT(NVARCHAR(MAX), CAST('30/10/2018' as date), 112)
Temps d'exécution de la requête 22 Secondes.

Edi utiliser : Delphi 8X
j'ai essayé d'utiliser cette requête dans Delphi en utilisant les composants FIREDAC "FDQuery" voici la requête:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT * FROM OpenQuery(LinkedOracle9i, 'SELECT t.Employer_Num, t.Date,
       t.Libelle,
       b.Nom,
       SubStr(t.Lib, 7, 15) Lib_Nom,
       SubStr(t.Lib, 1, 6) Lib_Nom1,
       Sum(t.Credit) As Credit,
  FROM Table1 t, Table2 b
 WHERE t.Centre = 1001
   And t.Date = '''20181030'''	
   And t.Centre = b.Centre
   And t.Canaux = ''9''
   AND t.Employer_Num = b.Employer_Num
 Group By t.Employer_Num, t.lib, b.Nom, t.Date
 Order by SubStr(t.Libe, 1, 7), t.Employer_Num')
Le Nombre de guillemets utiliser c'est pour avoir une requête paramétrer, mais j'ai un message d'erreur le suivant:

[FireDac][Phys][ODBC][Microsoft][SQL Server Native 10.0][SQL Server]Syntaxe incorrecte vers '@P1'..

J'espère avoir donnée assez d'information pour mon problème merci.