bonjour à tous,
Je programme une petite console SQL avec QT, et lors de ma connexion à une base de données, je récupère la liste des schémas présents dans la base. Ensuite, lors de la sélection d'un schéma, je souhaite en affiche la liste des tables.
Voici donc la requête que j'exécute :
SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER = '"+schema+"' ORDER BY TABLE_NAME
Je récupère bien le résultat, mais le temps de traitement est vraiment très longs, environ 2 minutes, car il y a environ 500 tables dans ma base.
Par contre, lorsque je requête en ligne de commande ou a travers le logiciel TOAD (qui permet de gérer des BDD), le délai d'exécution est beaucoup plus rapide, de l'ordre de quelque secondes.
Voici le morceau de code qui me permet de récupérer le résultat de la requête :
Code C/C++ :
if(driver=="QOCI"){
QSqlQuery query("SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER = '"+schema+"' ORDER BY TABLE_NAME", QSqlDatabase::database(connectionName));
query.exec();
while (query.next()) {
result << query.value(0).toString();
}
}
Il-y-a-t'il moyen de faire autrement afin que le résultat que j'obtiens en CLI ou avec TOAD arrive aussi rapidement ? Avec le logiciel TOAD ou la ligne de commande SQL, c'est le drivers du client oracle installé sur la machine qui est utilisé. Dans mon programme, j'utilise le driver QOCI ou QOPENOCCI, mais le résultat est idem, un peu trop long...
Merci