HSQL + Hibernate (Performance ruim + problemas)

Galera, alguém aí pode me dar uma luz.

Estou usando o HSQL(standalone) com Hibernate. Tenho apenas duas tabelas, onde uma tem duas colunas e 18 linhas e a outra tem 8 colunas, sendo uma string (pequena, menos de 50 caracteres) e o resto int, com 1.500.000 de linhas mais ou menos.

A performance está muito ruim. Criei índices nos campos significativos(somente os inteiros) mas num ajudou muito. Meu tempo de resposta pra qualquer consulta é bem superior a 30 segundos, e o programa está consumindo muita memória.

Outro problema, quando rodo o programa pelo netbeans ele funciona beleza, mas se eu executar o .jar por fora ele não consegue se conectar ao banco.

Obs.: Para abrir o banco com a ferramenta disponibilizada pelo gestor do HSQL, o DataBaseManagerSwing, só iniciando ele com Xmx superior a 512M pq senão dá heap space.

Vlw

O HSQLDB não é bom para tabelas grandes. Em vez de usar uma B-Tree, ele usa árvores binárias simples. Então uma tabela de 1500000 registros exige até 21 acessos ao arquivo se você tiver um índice adequado para sua consulta. Em um banco de dados tradicional (não sei se o Derby também usaria B-trees) haveria muito menos acessos, tipicamente 3 ou 4. Além disso, o HSQLDB, como você pôde comprovar, também tem a tendência de deixar bastante coisa em memória. (Eu digo isso porque tive de mexer no HSQLDB).

Alguém sabe se o Derby é melhor para arquivos grandes?