Just use the pagination control:
SELECT * FROM something `news`
WHERE (some condition to filter by category) AND date < "time of page hit"
ORDER BY `something` ASC
LIMIT 20, 20
I have added this request only two small changes. First - set the offset for the LIMIT, it is necessary to calculate in PHP and insert into a query. The first number is just the page number minus one, multiplied by the number of posts on the page
. The second digit as usual, the number of posts on the page.
Second izmeneniye added additional where condition: select only the news that was already in the database, the user has opened the page. This is because if in the process of loading of the news is added to another, the page will go (you might notice this when flipping Habr and on the next page, first see the last post on the previous), and some news sabbionetta in the list on the client. Time of page hit is to be stored on the client and transmitted to the server when the upload of each piece of data.
This method depends on how you sort news by date, rating, any other field... the main thing that podruzka the first and all subsequent were sorted the same way.