Jointure avec une base Oracle
Bonjour
J'ai actuellement une base SQL SERVER dont nous complétons les données à l'aide d'une base oracle
Aujourd'hui ceci est fait de la façon suivante
A) Lecture base SQL
B) Pour chaque ligne de la base SQL , lecture base oracle à travers openquery
C) Maj base SQL
Ceci fonctionne très bien mais pose un pb de temps réel. (Cette fonction se fait toutes les 5 mn)
L'idée serait donc de passer par une view mais , à l'essai, les tps de réponse sont catastrophiques (largement sup à 5 mn)
Table SQL [Locale] => 100 lignes (5 colonnes par ligne)
Table Oracle [Remote] => 3 000 000 lignes
View (Créée du cote SQL SERVER)
Code:
create view schema.toto as select A.*,B.* from openquery(DBLINK,'select col1,col2 from shema.tblOracle) A right join schema.tblServer B on A.col1 = B.col11
(col1 possède un index unique défini dans oracle, mais n'est pas la clé primaire)
select * from schema.toto provoque clairement un full table scan du coté oracle
Comment puis je faire en sorte que oracle ne parte pas en full table scan ?
Merci de votre aide
Sql Jointure avec base oracle
Citation:
Envoyé par
al1_24
La première idée serait de n'aller consulter la base distante que sur les lignes utiles.
S'il y a une seule colonne à récupérer, par exemple :
Code:
create view schema.toto as select (select col2 from openquery(DBLINK,'select col2 from schema.tblOracle where col1 = ' || col11) as col1, B.* from schema.tblServer B
Merci pour votre réponse
C'est ce que j'ai fait mais le openquery provoque un full table scan
En effet, si j'ai bien compris le mécanisme, il y a d'abord récup des data sur le remote puis la jointure. Comme le select ne définit pas de where, on ramène l'ensemble de la base ce qui provoque des tps de réponse catastrophiques.
Cordialement
Sql Jointure avec base oracle
Citation:
Envoyé par
SQLpro
Dans ce cas il faut implémenter un REMOTE JOIN.
Code:
1 2
| SELECT *
FROM MaTable_SQLServer INNER REMOTE JOIN MatableOracle ON
|
A +
Merci mais le pb de l'inner join c'est que la view ne ramènera que ce qui correspond , pas les données SQL SERVER sans correspondance.
Mais je vais creuser cette piste
Cordialement
Edut : Essai fait et ça fonctionne
Merci beaucoup