SQL Server Linked Oracle9i : résultat de la requête très long
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:
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:
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:
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.