Leyendo lo que expones. Me hago una pregunta, ¿Haz analizado el costo que tiene hacer una consulta por cada pulsación de teclado?.
Con respecto a lo que comentas, lo que está sucediendo es que estás actualizando el texto del componente y el te coloca al inicio del mismo. Podrías mirar algún método para colocarte al final del texto digitado para continuar con la escritura.
Buscando en google, podrás hallar algunas porciones de códigos que te ayuden con lo que necesitas.