2017-02-13 2 views
-2

У меня проблема с производительностью ResultSet.next() при извлечении данных из базы данных sqlite. Я использую org.sqlite.JDBC драйвер. Я попытался настроить заявление/ResultSet.fetchSize(), но это тоже не сработало.Плохая производительность ResultSet.next() в java sqlite JDBC

Операция длится около 25 секунд, когда я использую оператор SQL с параметром string в предложении WHERE (с параметром non-string в WHERE, он длится всего 4 секунды).

Я нашел, что с некоторыми драйверами в URL-адресе можно установить send string parameter as unicode = false, что должно повысить производительность. Однако мне не удалось найти способ установить соединение с SQLite.

Может ли кто-нибудь помочь мне с этой проблемой?

+1

Вы должны добавить дополнительную информацию: сколько данных, сколько строк, resultset-row-size, тип данных, индексы ...? Каковы ваши ожидания по производительности? – thst

+1

Без дополнительной информации, моя лучшая * guess * заключается в том, что у вас есть огромная таблица и нет индекса в столбце, используемом в предложении 'where'. Но, как я уже сказал, это всего лишь * догадка *. – Andreas

ответ

0

В SQLite строки результатов вычисляются по требованию. (SQLite не является клиентской/серверной базой данных, поэтому накладные расходы отсутствуют.)

Поэтому, когда next() работает медленно, это означает, что ваш запрос выполняется медленно и что база данных должна делать много ввода-вывода и/или много вычислений, пока он не сможет вернуть следующую строку.

Чтобы ускорить работу, вам необходимо улучшить дизайн базы данных, запрос или оборудование.

Смежные вопросы