2010-06-18 7 views
2

Je suis en train d'exécuter une requête dans Oracle db. Lorsque j'essaie d'exécuter SQLTools, la requête s'exécute en 2 secondes et lorsque j'exécute la même requête via JAVA, elle s'exécute en plus d'une minute.SQL en cours d'exécution lente lors de l'exécution à travers java

J'utilise un soupçon /*+ordered use_nl (a, b)*/

J'utilise ojdbc6.jar Est-ce à cause de tout POTS? S'il vous plaît aider à quoi cela provoque?

+1

Un exemple simple pourrait être utile. Aussi, mesurez-vous seulement le temps pour la requête ou une sorte de temps de démarrage de la JVM? –

+0

Je mesure l'heure de la requête – user270885

+1

Les indices ne sont pas pertinents à moins que vous ne postiez la requête, et peut-être le plan d'explication pour les versions non indiquées et suggérées de la requête. –

Répondre

1

Pour Oracle 9i ou version ultérieure, le moteur de base de données peut accorder SQL automatiquement, quelques cas doivent spécifier des indicateurs.

Comment exécuter une requête en Java, répéter pour exécuter en boucle? utiliser le paramètre? préparer avant d'exécuter?

+0

Je suis en cours d'exécution prepareedatement – user270885

+0

Est-ce que vous mesurez une minute dans quelle déclaration? 1. prepareStatement() 2. execute() 3. while (resultSet.next()) 4. // faire quelque chose coûte une minute dans laquelle l'étape? –

0

Vous devez profiler votre application Java pour identifier où dans le code Java avant ou après l'exécution de SQL cette heure est passée.

Certains outils de profilage que vous pouvez utiliser pour cela sont: YourKit, JProfiler et HPROF (celui-ci est un outil de ligne de commande).

+0

Pourquoi ma réponse a-t-elle été refusée? Vous avez vraiment besoin de lancer un profileur pour savoir pourquoi cela prend une minute pour exécuter le SQL via votre application Java. Je doute que c'est dans Oracle qu'il prend plus d'une minute, car cela ne prend que 2 secondes de SQL Tools. –