eu tentei ser o mais claro possivel no assunto sem escrever muito,espero que nao tenha ficado vago.
Eu estou fazendo o auto completar de um componente (JComboBox no caso), o usuario digita algo e é feita uma busca no banco por
campos correspondendes…ai vem o problema de desempenho.
Para dar um “efeito mais legal” na hora de preencher os dados,para cada letra que o usuario digita, é feita uma busca, e o componente tenta “adivinhar” oque o usuario quer digitar.Para bancos com poucas linha tudo bem,fica até bonito de ver funcionando,o problema é quando o banco é grande(i.e. procurar ruas por cep naquele banco dos Correios) usando esse metodo letra por letra fica um nojo,super lento mesmo usando “limits 0,5”.
Estou precisando de ajuda com o conceito,não quero codigos prontos (apesar de serem bem vindos se bem comentados),quero ajuda com ideias,já que “letra por letra” esta ficando inviavel,porem quero manter o mesmo “efeito”,com um banco pequeno mesmo da maneira errada fica quase em tempo real e eu gostaria de manter este efeito.
vc já tentou usar cache de segundo nível ? EhCache do hibernate talvez. acho que com algum tempo analisando o comportamento do seus usuários vc poderia configurar ele pra atender bem os casos mais frequentes pelo menos.
passando isso pro mysql,seria talvez guardar a(s) primeira(s) busca(s) em objetos na memoria,e nas proximas buscar direto no componente?
O campo que você está buscando no campo é indexado? Caso não seja, creio que criar um índice dará um ganho significativo.
SE vc estiver utilizando hibernate em sua aplicação, vc pode utilizar o recurso de cache de segundo nível, ele armazena o resultado de algumas consultas(de acordo com as suas configurações) em memória, e quando vc for buscar no banco, o própio hibernate identifica que os dfados já estão em memória e traz os resutlados mais rapidamente.
http://www.devx.com/dbzone/Article/29685
Achei alguma coisa falando de usar o Ehcache sem o hibernate, mas nunca fiz assim. Segue o link: http://faler.wordpress.com/2009/03/23/caching-observations-ehcache-with-hibernate-vs-ehcache-without-hibernate/
[]'s
valew vou dar uma olhada no hibernate, eu achava que era proprietario,por isso nunca fui atraz,agora que sei que é open source ja vale a pena tentar usa-lo.