2010-06-18 2 views
2

Я пытаюсь выполнить запрос в oracle db. Когда я пытаюсь запустить через SQLTools, запрос выполняется за 2 секунды , и когда я запускаю один и тот же запрос через JAVA, он выдает более чем за минуту.SQL работает медленно при выполнении через java

Я использую подсказку /*+ordered use_nl (a, b)*/

Я использую ojdbc6.jar Является ли это из-за каких-либо БАНКАХ? Пожалуйста, помогите, что вызывает это?

+1

Простым примером может быть полезно. Кроме того, вы измеряете только время для запроса или какое-то время запуска JVM? –

+0

Я измеряю время запроса – user270885

+1

Указания несущественны, если вы не разместите запрос и, возможно, план объяснения как для непечатаемых, так и для намеченных версий запроса. –

ответ

1

Для Oracle 9i или более поздней версии механизм базы данных может настраивать SQL автоматически, в небольшом случае необходимо указать подсказки.

Как запустить запрос в Java, повторить для запуска в цикле? использовать параметр? подготовить перед исполнением?

+0

Я бегу через подготовленное состояние – user270885

+0

Вы измеряете одну минуту, в каком заявлении? 1. preparestatement() 2. Execute() 3. в то время как (resultSet.next()) 4. // сделать что-то стоит одна минута, в которой шаг? – 2010-06-18 16:09:03

0

Вам необходимо написать ваше приложение Java, чтобы определить, где в коде Java до или после выполнения SQL это рабочее время расходуется.

Некоторые инструменты профилирования, которые вы можете использовать для этого: YourKit, JProfiler и HPROF (это инструмент командной строки).

+0

Почему мой ответ был опущен? Вам действительно нужно запустить профилировщик, чтобы узнать, почему для запуска SQL через ваше приложение Java требуется минута. Я сомневаюсь, что в Oracle он занимает минуту, так как он занимает всего 2 секунды от SQL Tools. –