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 :
Cette commande prends 15 secondes à s'éxecuter !! ce qui est très lent ^^
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
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 commandeprends 2 minutes à s'executer avec sqlplus. Résultat : 50600
Code : Sélectionner tout - Visualiser dans une fenêtre à part select count(*) from user_tables
La commandeprends 1 minute 50 avec sqlplus. Résultat : 113000
Code : Sélectionner tout - Visualiser dans une fenêtre à part select count(*) from user_indexes
Merci d'avance
Partager