Запрос на выбор hsqldb очень медленный - PullRequest
0 голосов
/ 22 февраля 2011

Я использую hsqldb, и я создал базу данных с таблицей, которая содержит 10.000.000 записей.Создание таблицы занимает около 15 минут.Затем в другой программе, которой нужны эти данные, я пытаюсь их прочитать.Я думал, что чтение их в группах по 100 000 будет быстрее.Поэтому я выполняю этот запрос:

rs = st.executeQuery("SELECT * FROM PATIENT WHERE pid>="+start+" AND pid<="+end+" ;");

, где start и end определяют группу, которую я хочу читать каждый раз.

Я сделал индекс для pid, но выполнение запроса все еще очень медленное.На самом деле он работает в течение 24 минут и получил первые 24 из 100 групп.Это нормально?Что еще я могу сделать?

Спасибо!

1 Ответ

0 голосов
/ 22 февраля 2011

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

EXPLAIN PLAN FOR SELECT ...

Если запрос действительно использует индекс, вы можете ускорить выбор, определив

SET TABLE PATIENT CLUSTERED ON (PID)

или определить PID в качестве первичного ключа

Вам также следует обратить внимание на увеличение размера кэша базы данных, увеличение лимита использования файла nio или другие настройки, обсуждаемые в Руководстве. Используйте новейшие банки HSQLDB от http://hsqldb.org/support/

...