OVH Cloud OVH Cloud

Requete sur serveur lié

2 réponses
Avatar
JeeCee
Bonjour,

J'ai un vrai problème de performance d'interogation des données
sur une table distante (liè).

J'ai deux serveurs SQL.
Server 1 : SQL 6.5
Server 2 : SQL 2000 Server

La table en question est sur le server1.
Elle contient 200 000 enregistrements.

Server1 est déclaré comme serveur lié sur server2,
via une connection native OleDb.


1) En se connectant directement sur le serveur Server 1 :

Select *
From myDb.dbo.myTable
Where condition1 & condition2 & ...

Les filtres portent uniquement sur la clef primaire;
La requête doit me retourner uniquement un seul enregistrement.

durée << 1s (qqes ms)

2) La même requête sur le server 2 :

Select *
From Server1.myDb.dbo.myTable
Where condition1 & condition2 & ...

2 min...!!!!

N.B. : Précision.
Server2 est ma machine de dév.
Dans le premier cas :
Je lance l'analyseur de requête sur server2
Ouvre la connection sur server1 et attaque directement la table

Dans le deuxième cas, je lance l'analyseur de requête toujours sur server2
Ouvre ma connection sur server2,
puis attaque la table via la connection lié.

Ce n'est donc pas un pb de réseau.

2 réponses

Avatar
bruno reiter [MVP]
surement dans le cas du serveur lié, il transfère d'abord toutes les données
et fait la sélection ensuite.

pour éviter cela, il faut que le "classement soit le même sur le serveur
lié, il doit y avoir une case à cocher au niveau du paramètrage du serveur
lié, je ne sais plus si c'est possible avec un 6.5

HTH

br

"JeeCee" wrote in message
news:cesvm3$1nh6$
Bonjour,

J'ai un vrai problème de performance d'interogation des données
sur une table distante (liè).

J'ai deux serveurs SQL.
Server 1 : SQL 6.5
Server 2 : SQL 2000 Server

La table en question est sur le server1.
Elle contient 200 000 enregistrements.

Server1 est déclaré comme serveur lié sur server2,
via une connection native OleDb.


1) En se connectant directement sur le serveur Server 1 :

Select *
From myDb.dbo.myTable
Where condition1 & condition2 & ...

Les filtres portent uniquement sur la clef primaire;
La requête doit me retourner uniquement un seul enregistrement.

durée << 1s (qqes ms)

2) La même requête sur le server 2 :

Select *
From Server1.myDb.dbo.myTable
Where condition1 & condition2 & ...

2 min...!!!!

N.B. : Précision.
Server2 est ma machine de dév.
Dans le premier cas :
Je lance l'analyseur de requête sur server2
Ouvre la connection sur server1 et attaque directement la table

Dans le deuxième cas, je lance l'analyseur de requête toujours sur server2
Ouvre ma connection sur server2,
puis attaque la table via la connection lié.

Ce n'est donc pas un pb de réseau.




Avatar
JeeCee
Effectivement,

Dans l'onglet "options du serveur", j'ai coché l'option "utiliser le classement
distant".

Les gains de performances sont sans aucune mesure...

01'16 à 00'04 sur une de mes requêtes.

Merci


"bruno reiter [MVP]" <remove.this! a écrit dans le message de
news:
surement dans le cas du serveur lié, il transfère d'abord toutes les données
et fait la sélection ensuite.

pour éviter cela, il faut que le "classement soit le même sur le serveur
lié, il doit y avoir une case à cocher au niveau du paramètrage du serveur
lié, je ne sais plus si c'est possible avec un 6.5

HTH

br

"JeeCee" wrote in message
news:cesvm3$1nh6$
Bonjour,

J'ai un vrai problème de performance d'interogation des données
sur une table distante (liè).

J'ai deux serveurs SQL.
Server 1 : SQL 6.5
Server 2 : SQL 2000 Server

La table en question est sur le server1.
Elle contient 200 000 enregistrements.

Server1 est déclaré comme serveur lié sur server2,
via une connection native OleDb.


1) En se connectant directement sur le serveur Server 1 :

Select *
From myDb.dbo.myTable
Where condition1 & condition2 & ...

Les filtres portent uniquement sur la clef primaire;
La requête doit me retourner uniquement un seul enregistrement.

durée << 1s (qqes ms)

2) La même requête sur le server 2 :

Select *
From Server1.myDb.dbo.myTable
Where condition1 & condition2 & ...

2 min...!!!!

N.B. : Précision.
Server2 est ma machine de dév.
Dans le premier cas :
Je lance l'analyseur de requête sur server2
Ouvre la connection sur server1 et attaque directement la table

Dans le deuxième cas, je lance l'analyseur de requête toujours sur server2
Ouvre ma connection sur server2,
puis attaque la table via la connection lié.

Ce n'est donc pas un pb de réseau.