Only send a limited amount of results when you query the database (for example 10 results). Then when they get to the end of the results list, they would hit a button that says, for example, "Load More" and that would initiate an AJAX request to your application to query the database and return the next 10 results, and so on. You shouldn't be sending the entire data-set back at once that is why you are experiencing memory performance issues.
<script src="/path/to/jquery.min.js"></script>
<script src="/path/to/waypoints.min.js"></script>
<script>
$(document).ready(function(){
// will initiate when the element with id="my_results" first comes into the users view
$('#my_results').waypoint(function(){
// do you stuff with the json that you already have loaded on the page (this is the callback function)
},
{ offset: 'bottom-in-view' }
);
});
</script>