Son preguntas complicadas y nunca he entrado a resolverlas. Para cargar por trozos puedes usar un script de paginación en php y poner el echo con el total de los resultados llamados. Yo uso este script:
www.desarrolloweb.com/articulos/1248.php
En el que puedes omitir la paginación html, el formualrio de búsqueda y quedarte con aquello útil. Cuando haces un siguiente cargas las variable de paginación en la url de manera que sólo te muestra x resultados.
En cuanto a si es pesado el xml generado puedes cargar el php y guardas como xml y entonces en propiedades del xml sabrás si es pesado o no. Tienes que tener un montonazo de registros para que el xml sea muy pesado.
Si tienes más dudas aquí estamos.
Un saludo