Bonjour,

J'utilise une base de données avec 50000 tables dans une appli .NET. 99% de ces tables contiennent 2 champs de type BLOB.

Lorsque l'on utilise un OracleDataAdapter avec un CommandBuilder. la commande suivante est exécutée :

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
16
17
18
19
20
21
SELECT c1, c2, c3
FROM (SELECT acc.column_name c1, acc.constraint_name c2,
ac.constraint_type c3
FROM all_cons_columns acc, all_constraints ac
WHERE (ac.constraint_type = 'P' OR ac.constraint_type = 'U')
AND ac.table_name = :b1
AND ac.owner = :b2
AND ac.table_name = acc.table_name
AND ac.owner = acc.owner
AND ac.constraint_name = acc.constraint_name
UNION
SELECT aic.column_name c1, ai.index_name c2, 'U' c3
FROM all_indexes ai, all_ind_columns aic
WHERE ai.uniqueness = 'UNIQUE'
AND ai.table_name = :b1
AND ai.table_owner = :b2
AND ai.table_name = aic.table_name
AND ai.table_owner = aic.table_owner
AND ai.index_name = aic.index_name
AND ai.owner = aic.index_owner)
ORDER BY 3, 2, 1
Cette commande prends 15 secondes à s'éxecuter !! ce qui est très lent ^^

On rempli l'Adapter en utilisant la méthode Fill(Dataset, string).

Est ce que cela ne devrait pas être plus rapide ?
Peut être ne faut il pas utiliser de DataAdapter avec une base de donnée de cette taille ?


Pour Information :

La commande
Code : Sélectionner tout - Visualiser dans une fenêtre à part
select count(*) from user_tables
prends 2 minutes à s'executer avec sqlplus. Résultat : 50600

La commande
Code : Sélectionner tout - Visualiser dans une fenêtre à part
select count(*) from user_indexes
prends 1 minute 50 avec sqlplus. Résultat : 113000

Merci d'avance